我有一个Foo列表。
Foo有一个名为Bar的字符串属性。
我想使用 LINQ 在Foo列表中为Foo.Bar获取不同值的字符串[]。
我该怎么做?
答案 0 :(得分:5)
我会去lambdas ...更好的方式
var bars = Foos.Select(f => f.Bar).Distinct().ToArray();
与@lassevk发布的内容相同。
我还要补充一点,你可能希望在最后一刻之前不要转换为数组。
LINQ在幕后做了一些优化,查询保留在查询表单中直到明确需要。因此,您可能希望首先在查询中构建所需的所有内容,以便完全应用任何可能的优化。
通过评估,我的意思是要求明确要求评估的内容,如“Count()”或“ToArray()”等。
答案 1 :(得分:3)
如果您想使用流畅的模式,这应该有效:
string[] arrayStrings = fooList.Select(a => a.Bar).Distinct().ToArray();
答案 2 :(得分:2)
试试这个:
var distinctFooBars = (from foo in foos
select foo.Bar).Distinct().ToArray();
答案 3 :(得分:0)
你不应该做类似的事情:
var strings = (from a in fooList select a.Bar).Distinct();
string[] array = strings.ToArray();