我有一个调用清单表:
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;
}
}
如果你改变这个:
ToDictionary(g => g.Key, g => g.Count);
到下面:
ToDictionary(g => g.Key, g => g.Count());
你会得到你想要的。这样做的原因取决于GroupBy
返回的结果。根据规格
group子句返回igrouing的序列对象,该对象包含零个或多个与的键值相匹配的项该集团。例如,您可以对字符串序列进行分组到每个字符串的第一个字母。在这种情况下,第一个字母是并具有类型char,并存储在每个键的key属性中IGrouping对象。对象的类型进行推断关键。
你想要得到的是每一组中项目的数量。由于您有一个序列,您可以通过调用Count
方法获得序列中项目的数量。