Объединение переменных номеров списков с LINQ
У меня есть список (List) объектов. Каждый из этих объектов содержит список (List) строк, описывающих их.
Мне нужно создать выпадающий список, содержащий все различные строки, используемые для описания объектов (карт). Для этого мне нужен список различных используемых строк.
Любая идея, как / если это можно сделать с помощью LINQ?
2 ответа
Вы можете использовать метод / оператор расширения SelectMany, чтобы объединить коллекцию в отдельные элементы.
listOfObjects.SelectMany(x => x.DescriptionStrings).Distinct()
Это выберет все строки из коллекции строк описания для каждого объекта в вашем списке объектов.
LINQ имеет отличительную функцию.
Предполагая, что "_cards" существует как переменная экземпляра List и Card.Description, возвращает описания и "cardsComboBox" (в WinForms):
cardsComboBox.AutoCompleteSource = _cards.SelectMany(c => c.Descriptions).Distinct();
Напоминаем, что это будет список описаний карт на момент привязки. Если вы хотите, чтобы он синхронизировался при обновлении _cards, вам придется проделать дополнительную работу или посмотреть на источник реактивной привязки. (Мы используем Bindable.Linq)