我有一张叫做清单的表:
public class CHECKLIST{
[Key]
public int CL_ID { get; set; }
public EmpID { get; set; }
}
我正在尝试返回如下所示的列表。
EMPID COUNT
1 5
2 7
3 10
我正在尝试将存储库编写为字典并在g =>处获得错误g.Count of无法将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;
}
}
答案 0 :(得分:2)
如果你改变了这个:
ToDictionary(g => g.Key, g => g.Count);
以下内容:
ToDictionary(g => g.Key, g => g.Count());
你会得到你想要的。你应该这样做的原因取决于GroupBy
返回的结果。根据{{3}}
group子句返回IGrouping的序列 包含零个或多个与键值匹配的项的对象 群组。例如,您可以根据字符串序列进行分组 到每个字符串中的第一个字母。在这种情况下,第一个字母是 键和char类型,并存储在每个键的Key属性中 IGrouping对象。编译器推断出的类型 键。
您想要的是获取每个组中的项目数。由于您有一个序列,您可以通过调用Count
方法获取序列中的项目数。