我想知道是否有更好/更快的方法来编写以下LINQ语句。
首先让我告诉你我的班级定义:
public class FooA
{
public List<FooB> ListFooB { get; set; }
}
public class FooB
{
public List<FooC> ListFooC { get; set; }
}
public class FooC
{
public List<FooD> ListFooD { get; set; }
}
现在我有一个存储FooA列表的类,我需要在FooC定义中使用FooD,所以我的LINQ如下所示:
public class MagicFoo
{
public List<FooA> ListFooA { get; set; }
public void DoSomeMagicWithFooD()
{
var fooDs = from a in ListFooA
from b in a.ListFooB
from c in b.ListFooC
from d in c.ListFooD
select d;
foreach (var fooD in fooDs)
{
//Do your magic with fooD...
}
}
}
是否有更好/更快的方式来编写LINQ?
答案 0 :(得分:4)
嗯,就效率而言,为了在从查询表达式到SelectMany
调用的转换中使用透明标识符,创建了许多额外的对象。您可以将其转换为:
var fooDs = ListFooA.SelectMany(a => a.ListFooB
.SelectMany(b => b.ListFooC
.SelectMany(c => c.ListFooD)));
效率更高,但可读性更低。
答案 1 :(得分:-2)
fooDs.ToList()。ForEach(c =&gt; c.foodd.ToList());