如何从内存列表中获取一组不同的属性值?

Posted

技术标签:

【中文标题】如何从内存列表中获取一组不同的属性值?【英文标题】:How to get an array of distinct property values from in memory lists? 【发布时间】:2010-09-07 14:46:19 【问题描述】:

我有一个 Foo 列表。

Foo 有一个名为 Bar 的字符串属性。

我想使用 LINQ 为 Foo 列表中的 Foo.Bar 获取 distinct 值的字符串[]。

我该怎么做?

【问题讨论】:

【参考方案1】:

我会去 lambdas... 更好的方式

var bars = Foos.Select(f => f.Bar).Distinct().ToArray();

与@lassevk 发布的内容相同。

我还要补充一点,您可能希望在最后一分钟之前不要转换为数组。

LINQ 在幕后进行了一些优化,查询保持其查询形式,直到明确需要。因此,您可能希望首先将所需的一切构建到查询中,以便完全应用任何可能的优化。

通过评估,我的意思是要求明确需要评估的东西,例如“Count()”或“ToArray()”等。

【讨论】:

【参考方案2】:

如果您想使用流畅的模式,这应该可以工作:

string[] arrayStrings = fooList.Select(a => a.Bar).Distinct().ToArray();

【讨论】:

【参考方案3】:

试试这个:

var distinctFooBars = (from foo in foos
                       select foo.Bar).Distinct().ToArray();

【讨论】:

我可以在同一处获得另一个属性吗? 请解释一下你的意思。 我有一个 Foo 列表。 Foo 有一个名为 Bar and Coke 的字符串属性【参考方案4】:

难道你不能这样做:

var strings = (from a in fooList select a.Bar).Distinct();
string[] array = strings.ToArray();

【讨论】:

以上是关于如何从内存列表中获取一组不同的属性值?的主要内容,如果未能解决你的问题,请参考以下文章

如何从表中获取字段列表和不同值

如何使用 jQuery 处理 2 次不同的 div 点击并从属性数据中获取值?

如何从商店获取唯一/不同的数据?

如何从以前的值生成中获取不同的十六进制值?

javascript 从对象数组中获取不同的属性值

如何在下拉列表中获取每个项目的不同悬停值?