观看了几个有关如何创建具有groupby和位置的linq查询的问题之后,我自己尝试了一下,但是没有运气。
我想将此SQL查询转换为相应的linq查询
select distinct city from zipcodedata
group by city
having city like 'zw%'
在表上有8mln记录的开发机器上,此查询大约在0,03秒内即可完成。但是当我尝试创建像这样的linq查询时:
res = _context.Zipcodes
.GroupBy(z => z.City)
.Where(z => z.Key.Contains(query))
.Select(z => z.Key)
.ToList();
sql profiler告诉我以下查询
SELECT [z].[Zipcode], [z].[Street], [z].[Streetnumber], [z].[City], [z]. [Latitude], [z].[Longitude], [z].[Municipality], [z].[Province]
FROM [ZipcodeData] AS [z]
ORDER BY [z].[City]
我看不到那里也没有,有人可以向我解释为什么会这样。
作为脚注即时消息使用Dotnet CORE 1.1.0和EFCore 1.1.0
经过进一步的研究,根据EF-Core与EF之间的功能比较,我发现EF-Core中尚不可能
它指出Features not in EF Core --> Querying Data
:
特别是GroupBy转换会将LINQ GroupBy运算符的转换移到数据库而不是内存中。
在Github上看到此问题,与我在SQL Profiler中查询时看到的完全一样:-(
我希望其他人会发现这个答案有用
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句