gpt4 book ai didi

c# - LINQ to SQL 到 LINQ to Objects - 通过 AsEnumerable 或通过 ToList 切换

转载 作者:行者123 更新时间:2023-12-02 05:06:05 26 4
gpt4 key购买 nike

虽然有必要从一个 LINQ 驱动程序切换到另一个(例如,因为第一个驱动程序可能不支持某些想要的表达式)应该使用哪种类型的开关 - AsEnumerable列表 ?

var r = ent.Users.Select(user => new
{
user.Name,
Organs = user.Attributes.Select(x => x.Organ)
})
.AsEnumerable() // switch to LINQ to Objects
.Select(user => new
{
user.Name,
Organs = string.Join(", ", user.Organs)
});

我知道 AsEnumerable 是延迟的,因此它不会立即枚举源,但是与使用 ToList 作为此处的开关有什么显着区别,在练习,而不是?

要在此处运行 LINQ to Objects,来自 SQL 的数据应该已经可用 - 因此如果在开关位置使用 ToList() 将执行此操作。 AsEnumerable 的使用是否强制在表达式树求值时在内部调用诸如 ToList 之类的东西?

最佳答案

.ToList()将建立一个新的List<T>在内存中并将所有对象存储在其中。
那是不必要的工作;你应该调用.AsEnumerable() .

一般来说,您应该只调用 .ToList()当您需要多次迭代时(并且仅在查询链的末尾)。

关于c# - LINQ to SQL 到 LINQ to Objects - 通过 AsEnumerable 或通过 ToList 切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16279923/

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