使用 LINQ 组合可变数量的列表
我有一个对象列表(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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以使用 SelectMany 扩展方法/运算符将集合展平为各个元素。
这将从对象列表中每个对象的描述字符串集合中选择所有字符串。
You can use the SelectMany extension method/operator to flatten a collection into the individual elements.
This will select all the strings out of the collection of description strings for each object in your list of objects.
LINQ 有一个 Distinct 函数。
假设“_cards”作为 List 的实例变量存在,并且 Card.Descriptions 返回描述,而“cardsComboBox”(在 WinForms 中):
提醒您,这将是绑定时的卡描述列表。如果您想在 _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):
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)