转换为linq时,以下sql查询的外观如何?
SELECT
myId, Count(myId)
FROM MyTable
GROUP BY myId
我尝试了以下内容:
var q = from a in db.MyTable
group a by a.Id into g
let count = g.Count()
select new
{
Count = Id,
Key= g.Key
};
但它在枚举时引发异常,表明没有带有名为“Key”的映射的db函数。我在这个特定的应用程序上使用LLBLGen,我怀疑这是根本问题所在。我想在开始挖掘之前验证我的linq语法是否正确。有人看错了吗?
答案 0 :(得分:3)
试试这个:
var q = from a in db.MyTable
group a by a.Id into g
select new { Id=g.Key, Count=g.Count() };
这与你的几乎相同,但你的Count
是以不同的方式获得的,这对我来说是错误的。
如果LLBLGen不理解IGrouping.Key
,那可能会很棘手......
要检查您的LINQ语法是否正确,我建议您构建一个非常简单的内存列表以用作表格。这是一个例子:
using System;
using System.Collections.Generic;
using System.Linq;
class Test
{
static void Main()
{
var data = new[] {
new { Id="X", Name="Jon" },
new { Id="Y", Name="Marc" },
new { Id="X", Name="Holly" },
};
var query = from a in data
group a by a.Id into g
select new { Id=g.Key, Count=g.Count() };
foreach (var entry in query)
{
Console.WriteLine(entry);
}
}
}
这看起来像是给了我正确的结果。