1

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

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

知道如何/如果这可以用 LINQ 完成吗?

4

2 回答 2

2

您可以使用 SelectMany 扩展方法/运算符将集合展平为单个元素。

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

这将从对象列表中每个对象的描述字符串集合中选择所有字符串。

于 2010-06-01T22:09:40.023 回答
0

LINQ 有一个Distinct函数。

假设“_cards”作为 List 和 Card.Descriptions 的实例变量存在,则返回描述和“cardsComboBox”(在 WinForms 中):

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

提醒一下,这将是绑定时的卡片描述列表。如果您想在 _cards 更新时保持同步,那么您将不得不做一些更花哨的步法或查看反应绑定源。(我们使用Bindable.Linq

于 2010-06-01T22:12:00.680 回答