gpt4 book ai didi

c# - Linq FirstOrDefault().Attribute vs Where().Select(a => Attribute).FirstOrDefault()

转载 作者:行者123 更新时间:2023-12-04 09:46:16 25 4
gpt4 key购买 nike

我一直在清理一些旧代码,并遇到了以下结构的一些查询:

var attribute = DbSet.Where(<condition>).Select(a => a.Attribute).SingleOrDefault();

当我试图使代码更具可读性时,我会将其更改为:

var attribute = DbSet.SingleOrDefault(<condition>).Attribute;

因此缩短了语句。

但是现在我想知道这两者中哪一个对性能更好,哪一个对内存管理更好。

最佳答案

这取决于。 DbSet.SingleOrDefault(<condition>).Attribute将从数据库中获取整行并将其通过网络传递给您的应用程序。因此,如果您的表有许多列和/或包含大量数据的列(大数据、一些二进制数据),那么第一个应该更快,因为它只会获取实际需要的数据。

另请注意 SingleOrDefault可以返回空值,所以没有空值检查你可以得到 NullReferenceException .

关于c# - Linq FirstOrDefault(<condition>).Attribute vs Where(<condition>).Select(a => Attribute).FirstOrDefault(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62092969/

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