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

问题描述:

我有一个Foo列表。如何从内存列表中获取不同属性值的数组?

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

我想使用LINQ 符列表以获得[]不同的字符串值Foo.Bar。

我该怎么做?

我会去的lambda ... wayyy更好

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

与@lassevk发布的内容相同。

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

LINQ在后台做了一些优化,查询一直保留在它的查询表单中,直到明确需要。因此,您可能希望首先将所需的所有内容构建到查询中,以便完全应用任何可能的优化。

通过评估手段我要求的东西,明确要求评价;像“COUNT()”或“ToArray的()”等

试试这个:

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

我可以得到另一个属性吗? – 2017-12-07 08:09:24

,如果你想用流利的模式这应该工作:

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

你不应该能够做这样的事?

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