Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Linq选择IList List parents=newlist(); var parent1=新的MyParentClass(“parent1”); var parent2=新的MyParentClass(“parent2”); 添加(parent1); 添加(parent2); var child1=新的MyChildClass(“child1”); parent1.children.Add(child1); var child2=新的MyChildClass(“child2”); var child3=新的MyChildClass(“child3”); parent2.children.Add(child2); parent2.children.Add(child3); var foo=来自父级中的p 在p.children中从c中选择 选择c; Assert.IsNotNull(foo); aresequal(3,foo.Count()); NUnit.Framework.AssertionException: 预期: 但是:_C#_Linq_Ilist - Fatal编程技术网

C# Linq选择IList List parents=newlist(); var parent1=新的MyParentClass(“parent1”); var parent2=新的MyParentClass(“parent2”); 添加(parent1); 添加(parent2); var child1=新的MyChildClass(“child1”); parent1.children.Add(child1); var child2=新的MyChildClass(“child2”); var child3=新的MyChildClass(“child3”); parent2.children.Add(child2); parent2.children.Add(child3); var foo=来自父级中的p 在p.children中从c中选择 选择c; Assert.IsNotNull(foo); aresequal(3,foo.Count()); NUnit.Framework.AssertionException: 预期: 但是:

C# Linq选择IList List parents=newlist(); var parent1=新的MyParentClass(“parent1”); var parent2=新的MyParentClass(“parent2”); 添加(parent1); 添加(parent2); var child1=新的MyChildClass(“child1”); parent1.children.Add(child1); var child2=新的MyChildClass(“child2”); var child3=新的MyChildClass(“child3”); parent2.children.Add(child2); parent2.children.Add(child3); var foo=来自父级中的p 在p.children中从c中选择 选择c; Assert.IsNotNull(foo); aresequal(3,foo.Count()); NUnit.Framework.AssertionException: 预期: 但是:,c#,linq,ilist,C#,Linq,Ilist,我想我会得到一个或多个IList,但我只想得到三个孩子。我如何获得它?我对查询语法没有太多信心,但我认为这将使子项列表变得更平坦: List<MyParentClass> parents = new List<MyParentClass>(); var parent1 = new MyParentClass("parent1"); var parent2 = new MyParentClass("parent2"); parents.Add

我想我会得到一个或多个IList,但我只想得到三个孩子。我如何获得它?

我对查询语法没有太多信心,但我认为这将使子项列表变得更平坦:

    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>
使用扩展方法语法,它如下所示:

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

实际上,您正在返回一个IEnumerable。为了得到一个简单的IEnumerable,您可以进行以下调用

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