我有一个对象列表(List)。 每个对象都包含一个描述它们的字符串列表(List)。
我需要创建一个包含用于描述对象(卡片)的所有不同字符串的下拉列表。为此,我需要一个使用不同字符串的列表。
知道如何使用LINQ完成此操作吗?
答案 0 :(得分:2)
您可以使用SelectMany扩展方法/运算符将集合展平为单个元素。
listOfObjects.SelectMany(x => x.DescriptionStrings).Distinct()
这将从对象列表中的每个对象的描述字符串集合中选择所有字符串。
答案 1 :(得分:0)
LINQ具有Distinct功能。
假设“_cards”作为List和Card.Descriptions的实例变量存在,则返回描述和“cardsComboBox”(在WinForms中):
cardsComboBox.AutoCompleteSource = _cards.SelectMany(c => c.Descriptions).Distinct();
提醒一下,这将是绑定时的卡片描述列表。如果你想在_cards更新时保持同步,那么你将不得不做一些更花哨的步法或者看一个被动的绑定源。 (我们使用Bindable.Linq)