如何从内存列表中获取不同属性值的数组?
-
09-06-2019 - |
题
我有一个 Foo 列表。
Foo 有一个名为 Bar 的字符串属性。
我想用 LINQ 得到一个 string[] 的 清楚的 Foo 列表中 Foo.Bar 的值。
我怎样才能做到这一点?
解决方案
我会选择 lambda...更好
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();
不隶属于 StackOverflow