【发布时间】:2026-02-21 22:45:01
【问题描述】:
在 C# 中是这样的:
table
.GroupBy(row => row.SomeColumn)
.Select(group => group
.OrderBy(row => row.AnotherColumn)
.First()
)
Linq-To-Sql 将其转换为以下 T-SQL 代码:
SELECT [t3].[AnotherColumn], [t3].[SomeColumn]
FROM (
SELECT [t0].[SomeColumn]
FROM [Table] AS [t0]
GROUP BY [t0].[SomeColumn]
) AS [t1]
OUTER APPLY (
SELECT TOP (1) [t2].[AnotherColumn], [t2].[SomeColumn]
FROM [Table] AS [t2]
WHERE (([t1].[SomeColumn] IS NULL) AND ([t2].[SomeColumn] IS NULL))
OR (([t1].[SomeColumn] IS NOT NULL) AND ([t2].[SomeColumn] IS NOT NULL)
AND ([t1].[SomeColumn] = [t2].[SomeColumn]))
ORDER BY [t2].[AnotherColumn]
) AS [t3]
ORDER BY [t3].[AnotherColumn]
但它与 MySQL 不兼容。
【问题讨论】:
-
你不能监控数据库服务器以查看 C# 执行的查询吗(我猜你上面的语法是 LINQ)
-
@Iexu 是的,我可以,我用 MS SQL Server 做到了。但是我没有Linq-to-MySQL,只有Linq-To-Sql