将可变数量的列表与/ LINQ组合在一起

时间:2010-06-01 22:02:20

标签: linq list autocompletebox

我有一个对象列表(List)。 每个对象都包含一个描述它们的字符串列表(List)。

我需要创建一个包含用于描述对象(卡片)的所有不同字符串的下拉列表。为此,我需要一个使用不同字符串的列表。

知道如何使用LINQ完成此操作吗?

2 个答案:

答案 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

相关问题