【问题标题】:Effects of IEnumerable and IQueryable on Relational Database and Non-Relational DatabaseIEnumerable 和 IQueryable 对关系型数据库和非关系型数据库的影响
【发布时间】:2022-11-10 19:37:21
【问题描述】:

我最近开始学习Linq,所以我遇到了IQueryable 和 IEnumerable.我已经了解区别以及在哪里使用什么。但我有点怀疑 IEnumerable 和 IQueryable 在所有数据库中是否具有相同的效果假设我们有PostgreSQL 和 MongoDB会不会有同样的效果PostgreSql 一个关系数据库和 MongoDb 一个非关系数据库数据库?有人可以帮我吗?任何额外的信息表示赞赏。提前致谢。

【问题讨论】:

    标签: linq ienumerable iqueryable


    【解决方案1】:

    允许您对 SQL 和 NO-SQL 数据库使用 LINQ 表达式的 .NET 驱动程序有其局限性。

    例如,在 mongo 最受欢迎的 c# 驱动程序网站 (MongoDB C# Driver) 中,我们建议使用分析器来告诉我们哪些 LINQ 表达式有效或无效:

    但是,在回答您的另一个问题时,这仅对 IQueryable 接口有效,因为它是您的 LINQ 表达式将被转换为 Mongo 查询的两个接口中唯一的一个。对于 IEnumerable 接口,您始终是安全的,因为只有从数据库中获取数据后,查询才会在内存中进行。

    请记住,IQueryable 和 IEnumerable 都支持延迟执行。不同之处在于,使用 IEnumerable 当您实例化列表 (.ToList) 时,您将查询数据库,然后才应用您的过滤器(在内存中)。当您实例化 IQueryable 时,它​​会在数据库查询本身中“应用”您的过滤器(这就是为什么它更快并且在处理数据库时通常被推荐 - 您可能会从数据库中获取更少的数据)。

    在这里很好地描述了 IQueryable 和 IEnumerable 之间的区别:Returning IEnumerable vs. IQueryable

    【讨论】:

      猜你喜欢
      • 2010-09-08
      • 1970-01-01
      • 2011-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多