【发布时间】:2018-07-18 19:21:40
【问题描述】:
我在 SQL 中有这个查询:
SELECT *
FROM TableName
WHERE myData IN (SELECT MAX(myData) AS DATA_MAX
FROM TableName
GROUP BY id1, id2)
我想在 Linq (c#) 中复制它 - 我该怎么做?
【问题讨论】:
-
为什么要将其转换为 LINQ?我从不理解这种痴迷;您可以使用许多出色的工具非常轻松地从 .NET 代码中执行准确的 SQL,这将比解析 LINQ 表达式树效率高得多,并且需要零努力来实施。你有理由需要它作为 LINQ 吗?您对非 LINQ 解决方案感兴趣吗?另外:问题标题中提到的“错误”是什么?
-
@MarcGravell 是非常正确的。 Linq 是一个很棒的东西,但我们不需要将它硬塞到所有东西中,它并不总是最有效的方式。
-
这个查询 100000% 不适合 LINQ - 它与对象或映射无关。这是一个报告查询。查询本身需要优化——你可以使用
MAX() OVER(PARTITION BY id1,id2)吗?执行计划会更好吗?额外的索引呢?创建一个 View 并映射到它,这样您就可以优化查询而无需重新编译和重新部署 -
我该怎么做 - 首先选择一个支持 LINQ 的 ORM。
标签: c# sql linq sql-to-linq-conversion