gpt4 book ai didi

c# - 为什么 DbSet.Where() 默认使用 IQueryable 版本?

转载 作者:行者123 更新时间:2023-11-30 19:57:45 26 4
gpt4 key购买 nike

每当我们想使用 IEnumerable 扩展方法而不是 IQueryable 版本时,我们都会使用 AsEnumerable() 方法。

var list = context.Details.AsEnumerable().Where(x => x.Code == "A1").ToList();

为什么 DbSet 在其他版本可用时默认使用 IQueryable 版本的方法 Like(Where , Select ,...)?

最佳答案

您通常希望使用IQueryable 表单,以便在数据库而不是本地完成过滤。

您获得的代码会将所有 记录拉到客户端,并在那里过滤它们——效率极低。当您尝试执行某些不能在数据库中执行的操作时,您应该只使用 AsEnumerable() - 通常在提供服务器端过滤器之后。 (您可以在服务器上进行粗略过滤,然后在本地进行更细粒度的过滤 - 但至少这样您不会提取所有记录...)

关于c# - 为什么 DbSet<t>.Where() 默认使用 IQueryable 版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28830759/

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