2012-03-29 60 views
1

我怎样才能将我的字符串列表:筛选器列表数据C#

List<string> appliedFilters = filterString.Split(',').Select(n => n).ToList(); 

进入无重复列表?

我的字符串(appliedFilters)名单如下:

7-27, 
2-37, 
7-28, 
9-18, 
9-22, 
9-80 

我需要输出这个名单没有重复的字符串的第一部分,例如:

7-27-28, 2-37, 9-18-22-80 

我确定在这里有一个LINQ查询,但无法弄清楚。

+0

您可以省略'Select(n => n)' – 2012-03-29 10:09:03

回答

5
filterString.Split(',') 
    .Select(s => s.Split('-')) 
    .GroupBy(ss => ss[0]) 
    .Select(group => string.Join("-", new[]{group.Key}.Concat(group.Select(ss => ss[1])).ToArray())); 
+0

您不需要ToArray。 – 2012-03-29 10:19:43

+1

我认为这是优雅与可读性成为问题的时候。我个人很难理解LINQ中发生的事情。无论如何,建议一个解决方案,仔细检查,看起来会起作用。 – SkonJeet 2012-03-29 10:20:55

+0

正是我需要的和一个令人印象深刻的LINQ查询:)谢谢 – Leigh 2012-03-29 10:25:03