2009-06-17 67 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