4

我有一个 Foo 列表。

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

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

我怎样才能做到这一点?

4

4 回答 4

5

我会去 lambdas... 更好

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

与@lassevk 发布的内容相同。

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

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

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

于 2008-09-02T20:18:09.713 回答
3

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

string[] arrayStrings = fooList.Select(a => a.Bar).Distinct().ToArray();
于 2008-09-02T20:16:09.343 回答
2

试试这个:

var distinctFooBars = (from foo in foos
                       select foo.Bar).Distinct().ToArray();
于 2008-09-02T20:13:41.470 回答
0

你不应该能够做类似的事情:

var strings = (from a in fooList select a.Bar).Distinct();
string[] array = strings.ToArray();
于 2008-09-02T20:18:43.597 回答