gpt4 book ai didi

c# - LINQ 中哪种方法更好?

转载 作者:太空狗 更新时间:2023-10-30 01:59:55 24 4
gpt4 key购买 nike

我在 C# 中使用 linq,我有一个快速的问题。

我在这里展示了非常少的代码,实时还有一些排序操作。我想从下面知道我应该使用哪种方法??

方法 1

 public class UserDetails
{
private dbContext db = new dbContext();
public List<User> ActiveUser()
{
return db.Users.Where(m => m.Active == true).ToList();
}
public List<User> InActiveUser()
{
return db.Users.Where(m => m.Active == false).ToList();
}

}

方法 2

 public class UserDetails
{
List<Defect> allUser = new db.Users.ToList();
public List<User> ActiveUser()
{
return allUser.Where(m => m.Active == true).ToList();
}
public List<User> InActiveUser()
{
return allUser.Where(m => m.Active == false).ToList();
}

}

有超过20个方法在获取数据,每个方法都是从同一个表中获取不同where条件的数据。我的问题是我应该创建 dbContext 然后在每个方法中使用单独的查询 (Approch 1) 或者我应该创建一个列表并获取所有数据并在方法本身中使用过滤它哪里条件。 (方法 2)

最佳答案

视情况而定。一般来说,我更喜欢方法 1,因为您通常无法预测数据库中有多少用户,并且您会将所有用户拉入内存,这会导致很大的内存开销。此外,对于大量用户,您将利用索引和查询执行计划等数据库优化。

如果我们谈论的是少量用户,则方法 2 可能是性能更高的方法,因为您减少了与数据库的往返次数。但除了内存开销之外,它还有其他问题,例如缓存用户和丢失数据库更新。

但是,我几乎总是更喜欢方法 1,因为在数据库上进行大部分过滤和排序工作是一种很好的做法,因为它已针对执行此类操作进行了优化。使用方法 2 您可能会遇到麻烦,因为您的用户群会随着时间的推移而增长,并且很难追踪缓存或内存问题。此外,如果您的连接不是非常糟糕或多次连接,一次和两次数据库往返之间的差异几乎可以忽略不计。

关于c# - LINQ 中哪种方法更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56771421/

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