我正在使用EF Core 2.1,并且查询在SQL Server端不进行评估。
此查询中使用的模型是:
public class V_CreatedLines
{
public long Id { get; set; }
public DateTime DocumentDate { get; set; }
public string DocumentTypeCode { get; set; }
public string SalesDocumentTypeCode { get; set; }
public long? UserId { get; set; }
public long CreatedDocumentHeaderId { get; set; }
public decimal LineAmountWithoutVAT { get; set; }
public long? ItemSuccessorID { get; set; }
public int Brojanje { get; set; }
}
我的LINQ声明是这样的:
return query
.GroupBy(g => new
{
g.SalesDocumentTypeCode,
g.DocumentTypeCode,
g.DocumentDate
})
.Select(i => new
{
key = i.Key,
Count = i.Select(g => g.CreatedDocumentHeaderId).Distinct().Count(),
})
.Select(i =>
new V_CreatedLines
{
DocumentTypeCode = i.key.SalesDocumentTypeCode,
DocumentDate = i.key.DocumentDate,
SalesDocumentTypeCode = i.key.SalesDocumentTypeCode,
Brojanje = i.Count
});
此LINQ语句有效,但在内存中执行GroupBy
在“输出”窗口中出现警告
Microsoft.EntityFrameworkCore.Query:警告:LINQ表达式'Distinct()'无法翻译,将在本地进行评估。 Microsoft.EntityFrameworkCore.Query:警告:LINQ表达式'Count()'无法翻译,将在本地进行评估。
当我使用不带区别的查询时,它工作正常。
为什么用Distinct()。Count()解决问题?
我尝试了Linq select distinct count performed in memory
但这不起作用。