EntityFramework核心组通过给我一个订单

Bob*_*421 4 entity-framework-core

这是我的linq to sql查询:

var data = 
    from p in dbcontext.person
    group p by p.city.ToLower() into g
    select new StatsViewModel { city = g.Key, citizen_count = g.Count() };
Run Code Online (Sandbox Code Playgroud)

这是我在sql server中获得的真正的sql查询:

SELECT [p0].[id_person], [p0]....
      FROM [person] AS [p0]
      ORDER BY LOWER([p0].[city])
Run Code Online (Sandbox Code Playgroud)

这是一个订单,而不是一个小组...

Iva*_*oev 6

这是GroupBy当前EF Core 的转换的已知问题,由Relational跟踪:支持将GroupBy()转换为SQL#2341并承诺在下一个EF Core 2.1版本中修复(根据EF核心路线图).所以在那之前,你无能为力.

但是不要被生成的SQL所迷惑.EF Core使用所谓的Cliend和Server Evaluation的组合,在这种特殊情况下意味着GroupBy在检索到您看到的SQL查询的结果后将在内存中执行,因此实际结果将是正确的."唯一"问题可能是表现.