使用 LINQ 组合可变数量的列表

发布于 2024-09-04 07:54:36 字数 144 浏览 7 评论 0原文

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

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

知道如何/是否可以使用 LINQ 来完成此操作吗?

I have a list (List) of objects.
Each of those objects contains a list (List) of strings describing them.

I'm needing to create a dropdown containing all of the distinct strings used to describe the objects (Cards). To do this, I need a list of distinct strings used.

Any idea how/if this can be done with LINQ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

饮惑 2024-09-11 07:54:36

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

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

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

You can use the SelectMany extension method/operator to flatten a collection into the individual elements.

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

This will select all the strings out of the collection of description strings for each object in your list of objects.

萌︼了一个春 2024-09-11 07:54:36

LINQ 有一个 Distinct 函数。

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

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

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

LINQ has a Distinct function.

Assuming "_cards" exists as instance variable of List and Card.Descriptions returns the descriptions and "cardsComboBox" (in WinForms):

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

A reminder that that will be the list of card descriptions at the time of binding however. If you want to keep it synchronised when _cards get updated then you'll have to do some more fancy footwork or look at a reactive binding source. (We use Bindable.Linq)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文