2009-06-17 75 views
0

我有一個多個字符串的列表,我需要通過它們的後綴對它們進行操作。唯一沒有改變的是字符串的開頭(它們總是ManifestXXX.txt,FileNameItems1XXX ...)。帶有後綴的字符串結尾每次都不相同。這是我到目前爲止(Linq Pad):Linq關於分組的東西可以改變的問題?

var filesName = new[] { "ManifestSUFFIX.txt", 
"FileNameItems1SUFFIX.txt", 
"FileNameItems2SUFFIX.txt", 
"FileNameItems3SUFFIX.txt", 
"FileNameItems4SUFFIX.txt", 

"ManifestWOOT.txt", 
"FileNameItems1WOOT.txt", 
"FileNameItems2WOOT.txt", 
"FileNameItems3WOOT.txt", 
"FileNameItems4WOOT.txt", 
}.AsQueryable(); 

var query = 
    from  n in filesName 
    group n by n.EndsWith("SUFFIX.txt") into ere 
    select new{ere} ;  

query.Dump(); 

GROUP中的條件不好。我想要嘗試使用組中嵌套的SELECT獲取所有可能的後綴,但我找不到一種方法來完成它。

我怎樣纔能有3個不同的組,他們的後綴與Linq分組?可能嗎? *吉米的回答非常好,但仍然不能按照我們所希望的方式工作。任何修復?

回答

3

按後綴分組而不是匹配任何特定的分組。

... 
group by GetSuffix(n) into ere 
... 

string GetSuffix(string n) { 
    return Regex.Replace(n,"^Manifest|^FileNameItems[0-9]+", ""); 
} 
+0

謝謝,我不得不修改具體代碼的正則表達式,因爲這個例子非常簡單。我不知道我們可以在Linq中調用方法。 :P謝謝! – 2009-06-17 20:13:52