返回按id linq分组的count列表到sql

本文关键字:count 列表 sql id linq 返回 | 更新日期: 2023-09-27 17:52:16

我有一个调用清单表:

public class CHECKLIST{
[Key]
public int CL_ID { get; set; }
public EmpID { get; set; }
}

我试图返回一个列表,看起来像下面。

EMPID   COUNT
1       5
2       7
3       10

我正试图将存储库编写为字典,并在g=> g处得到错误。计数不能将lambda表达式转换为类型IEqualityComparer,因为它不是委托类型:

    public Dictionary<int, int> GetAllComplaintsCount()
    {
        try
        {
            return _context.Checklists
                .GroupBy(a => a.MonitorEnteredEmpID)
                .ToDictionary(g => g.Key, g => g.Count);
        }
        catch (Exception ex)
        {
            _logger.LogError("Could not get am with checklist", ex);
            return null;
        }
    }

返回按id linq分组的count列表到sql

如果你改变这个:

ToDictionary(g => g.Key, g => g.Count);

到下面:

ToDictionary(g => g.Key, g => g.Count());

你会得到你想要的。这样做的原因取决于GroupBy返回的结果。根据规格

group子句返回igrouing的序列对象,该对象包含零个或多个与的键值相匹配的项该集团。例如,您可以对字符串序列进行分组到每个字符串的第一个字母。在这种情况下,第一个字母是并具有类型char,并存储在每个键的key属性中IGrouping对象。对象的类型进行推断关键。

你想要得到的是每一组中项目的数量。由于您有一个序列,您可以通过调用Count方法获得序列中项目的数量。