【发布时间】:2010-09-07 14:46:19
【问题描述】:
我有一个 Foo 列表。
Foo 有一个名为 Bar 的字符串属性。
我想使用 LINQ 为 Foo 列表中的 Foo.Bar 获取 distinct 值的字符串[]。
我该怎么做?
【问题讨论】:
标签: c# .net performance linq filtering
我有一个 Foo 列表。
Foo 有一个名为 Bar 的字符串属性。
我想使用 LINQ 为 Foo 列表中的 Foo.Bar 获取 distinct 值的字符串[]。
我该怎么做?
【问题讨论】:
标签: c# .net performance linq filtering
我会去 lambdas... 更好的方式
var bars = Foos.Select(f => f.Bar).Distinct().ToArray();
与@lassevk 发布的内容相同。
我还要补充一点,您可能希望在最后一分钟之前不要转换为数组。
LINQ 在幕后进行了一些优化,查询保持其查询形式,直到明确需要。因此,您可能希望首先将所需的一切构建到查询中,以便完全应用任何可能的优化。
通过评估,我的意思是要求明确需要评估的东西,例如“Count()”或“ToArray()”等。
【讨论】:
如果您想使用流畅的模式,这应该可以工作:
string[] arrayStrings = fooList.Select(a => a.Bar).Distinct().ToArray();
【讨论】:
试试这个:
var distinctFooBars = (from foo in foos
select foo.Bar).Distinct().ToArray();
【讨论】:
难道你不能这样做:
var strings = (from a in fooList select a.Bar).Distinct();
string[] array = strings.ToArray();
【讨论】: