【问题标题】:Linq Select IListLinq 选择 IList
【发布时间】:2010-10-12 13:31:05
【问题描述】:
    List<MyParentClass> parents = new List<MyParentClass>();
    var parent1 = new MyParentClass("parent1");
    var parent2 = new MyParentClass("parent2");
    parents.Add(parent1);
    parents.Add(parent2);
    var child1 = new MyChildClass("child1");
    parent1.children.Add(child1);
    var child2 = new MyChildClass("child2");
    var child3 = new MyChildClass("child3");
    parent2.children.Add(child2);
    parent2.children.Add(child3);
    var foo = from p in parents
              select from c in p.children
                     select c;
    Assert.IsNotNull(foo);
    Assert.AreEqual(3, foo.Count());

NUnit.Framework.AssertionException: 
    expected: <3>
     but was: <2>

我想我得到了 IList 的 IList,但我希望只有三个孩子。我怎么得到它?

【问题讨论】:

    标签: c# linq ilist


    【解决方案1】:

    我对查询语法并不太自信,但我认为这会使子列表变平:

    var foo = from p in parents
              from c in p.children
              select c;
    

    使用扩展方法语法,它看起来像这样:

    var foo = parents.SelectMany(p => p.children);
    

    【讨论】:

      【解决方案2】:

      你实际上得到了一个 IEnumerable>。为了获得一个简单的 IEnumerable 您可以进行以下调用

      var bar = foo.SelectMany(x => x);
      

      【讨论】:

        猜你喜欢
        • 2011-08-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-12
        • 1970-01-01
        • 1970-01-01
        • 2015-07-25
        • 2010-10-06
        相关资源
        最近更新 更多