Объединение номеров переменных списков с LINQ - PullRequest
1 голос
/ 02 июня 2010

У меня есть список (List) объектов. Каждый из этих объектов содержит список (List) строк, описывающих их.

Мне нужно создать выпадающий список, содержащий все различные строки, используемые для описания объектов (карт). Для этого мне нужен список различных используемых строк.

Есть идеи, как / если это можно сделать с помощью LINQ?

Ответы [ 2 ]

2 голосов
/ 02 июня 2010

Вы можете использовать метод / оператор расширения SelectMany, чтобы объединить коллекцию в отдельные элементы.

listOfObjects.SelectMany(x => x.DescriptionStrings).Distinct()

Это выберет все строки из коллекции строк описания для каждого объекта в вашем списке объектов.

0 голосов
/ 02 июня 2010

LINQ имеет функцию Distinct .

Предполагая, что "_cards" существует как переменная экземпляра List и Card.Description, возвращает описания и "cardsComboBox" (в WinForms):

cardsComboBox.AutoCompleteSource = _cards.SelectMany(c => c.Descriptions).Distinct();

Напоминаем, что это будет список описаний карт на момент привязки. Если вы хотите сохранить синхронизацию при обновлении _cards, то вам нужно будет сделать несколько более хитроумных шагов или посмотреть на источник реактивной привязки. (Мы используем Bindable.Linq )

...