EF Core 2.1在Distinct()。Count()和分组时进行本地评估

时间:2019-08-28 10:18:39

标签: .net-core entity-framework-core ef-core-2.1

我正在使用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

但这不起作用。

0 个答案:

没有答案