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: 预期: 但是:
我想我会得到一个或多个IList,但我只想得到三个孩子。我如何获得它?我对查询语法没有太多信心,但我认为这将使子项列表变得更平坦: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
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);