Linq关于分组可以改变的事情的问题?

时间:2009-06-17 19:19:13

标签: c# .net linq

我有一个包含多个字符串的列表,我需要通过它们的后缀对它们进行操作。唯一没有改变的是字符串的开头(它们总是ManifestXXX.txt,FileNameItems1XXX ......)。带后缀的字符串结尾每次都不同。这是我到目前为止(Linq Pad):

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分组?有可能吗?

*吉米答案很棒,但仍然没有按照预期的方式工作。任何修复?

1 个答案:

答案 0 :(得分:3)

按后缀分组,而不是与任何特定的匹配。

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

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