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