gpt4 book ai didi

c# - 解析多个集合并获取单个列表的LINQ语句

转载 作者:太空宇宙 更新时间:2023-11-03 10:49:36 26 4
gpt4 key购买 nike

我想知道是否有更好/更快的方法来编写以下 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?

最佳答案

好吧,就效率而言,在从查询表达式到SelectMany 调用的转换过程中,为了透明标识符而创建了许多额外的对象。您可以将其转换为:

var fooDs = ListFooA.SelectMany(a => a.ListFooB
.SelectMany(b => b.ListFooC
.SelectMany(c => c.ListFooD)));

这样效率更高,但可读性较差。

关于c# - 解析多个集合并获取单个列表的LINQ语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22013112/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com