因此,EF Core 2.1会评估SQL Server上的GroupBy LINQ表达式(使用SQL提供程序时).
这很棒但是当查询变得更复杂时我遇到了问题.
用于这些查询的模型是:
public class Invoice
{
public string Status {get; set;}
public string InvoiceType {get; set;}
public decimal InvoicePayments {get; set;}
public decimal EligibleValue {get; set;}
}
Run Code Online (Sandbox Code Playgroud)
此LINQ语句完全在SQL Server中运行:
data
.GroupBy(i => new { i.Status, i.InvoiceType })
.Select(i => new
{
i.Key,
Count = i.Count(),
Total = i.Sum(x => x.EligibleValue)
});
Run Code Online (Sandbox Code Playgroud)
并生成以下SQL
SELECT
[i].[Status],
[i].[InvoiceType],
COUNT(*) AS [Count],
SUM([i].[EligibleValue]) AS [Col1]
FROM [Invoice] AS [i]
GROUP BY [i].[Status], [i].[InvoiceType]
Run Code Online (Sandbox Code Playgroud)
此LINQ语句有效,但在内存中执行GroupBy : …