LINQ:如何从另一个IEnumerable<T>创建一个IEnumerable<T>?

4

我有以下内容:

public class Foo
{
    public int x { get; set; }
}

public class Bar
{
    public void DoWork(IEnumerable<Foo> foos)
    {
        var enumOfX = ?;

        //Other code that uses enumOfX
    }
}

我怎样才能创建一个包含所有“x”的IEnumerable<int>呢?
1个回答

9
你使用 Select 方法:
var enumOfX = foos.Select(foo => foo.x);

大量使用LINQ to Objects是从另一个IEnumerable<T>创建一个,其余的只是聚合 :)

如果您更喜欢另一种语法:var enumOfX = from foo in foos select foo.x; - Dismissile
@Dismissile:是的 - 我没有在这里包含它,因为对于像那样的查询,使用查询表达式形式是没有意义的,我个人认为开发人员应该在两种形式中都感到舒适 :) - Jon Skeet
我同意...但是如果有些人不习惯lambda语法,他们可能会感到困惑。要循序渐进! - Dismissile
1
@Dismissile:不,先从lambda语法开始,然后再解释查询表达式是如何工作的。这样更少一些黑魔法,我个人认为 :) - Jon Skeet

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接