2012-03-29 3 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)' –

ответ

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. –

+1

Я думаю, что это когда элегантность и читаемость становятся проблемой. Трудно понять, что происходит в этом LINQ для меня лично. Во всяком случае, предлагайте решение, которое при ближайшем рассмотрении выглядит так, как будто это сработает. – SkonJeet

+0

Точно, что мне нужно и впечатляющий запрос LINQ :) Спасибо – Leigh