如何将带有Count函数的Sql转换为Linq

3
我该如何将此转换为LINQ?
select i.CatName,COUNT(*) as n_items
from ixcxs i
group by i.CatName

或者使用lambda表达式会很有帮助。
2个回答

4
您不需要选择组中的第一个项目来获取CatName - 而是使用分组键即可:
var query = from i in ixcxs
            group i by i.CatName into g
            select new {
               CatName = g.Key,
               n_items = g.Count()
            };

方法语法也相同:

var query = ixcxs.GroupBy(i => i.CatName)
                 .Select(g => new { CatName = g.Key, n_items = g.Count() });

2

尝试

ixcxs.GroupBy(g => g.CatName)
    .Select(s => new 
    {
        CatName = s.Key, 
        n_items = s.Count() 
    });

在查询语法中表示相同的意思:

from i in ixcxs
group i by i.CatName into g
select new 
{
    CatName = g.Key,
    n_items = g.Count()
}

方法“Single”和“SingleOrDefault”只能用作最终查询操作。在这种情况下,考虑使用方法“FirstOrDefault”代替。 - Urah
我用以下代码实现了这个功能: from t in db.ixcxs group t by new { t.CatName } into g select new { g.Key.CatName, Total = g.Count() };但是,还有更优化的写法吗? - Urah
嗯,好的,那是另一种方法。 - Urah

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接