当转换为linq时,这个sql查询(w count和group by)是什么样子的?

当转换为linq时,这个sql查询(w count和group by)是什么样子的?,linq,linq-to-objects,llblgenpro,Linq,Linq To Objects,Llblgenpro,以下sql查询在转换为linq时会是什么样子 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函数。我在这个特定

以下sql查询在转换为linq时会是什么样子

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语法是否正确。有人看到什么不对劲吗?

试试这个:

var q = from a in db.MyTable
        group a by a.Id into g
        select new { Id=g.Key, Count=g.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);
        }
    }
}
这似乎给了我正确的结果。

试试这个:

var q = from a in db.MyTable
        group a by a.Id into g
        select new { Id=g.Key, Count=g.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);
        }
    }
}

这看起来给了我正确的结果。

哈哈,我的方式确实很奇怪。这很有魅力。谢谢你,哈哈,我的方式真的很奇怪。这很有魅力。谢谢你,乔恩