我有一个LINQ to SQL函数,允许将keySelector funct作为参数:
Func<App, string> keySelector = a => a.Name;
Apps.GroupBy(keySelector).Select(g => new { Key = g.Key, Count = g.Count() }).Dump();
然而,当我查看生成的SQL时,很明显,超过初始表查询的所有内容都是在本地计算的,更糟糕的是,它查询表的每一列:
SELECT [t0].[AppId], [t0].[Name], [t0].[PublisherId], [t0].[PlatformId], [t0].[UnifiedAppId]
FROM [apps].[App] AS [t0]
如果我改为内联指定keySelector函数,它将按预期工作:
Apps.GroupBy(a => a.Name).Select(g => new { Key = g.Key, Count = g.Count() }).Dump();
SELECT COUNT(*) AS [Count], [t0].[Name] AS [Key]
FROM [apps].[App] AS [t0]
GROUP BY [t0].[Name]
你知道我该怎么做吗?谢谢