我有一个称为检查清单的表:
public class CHECKLIST{
[Key]
public int CL_ID { get; set; }
public EmpID { get; set; }
}
我正在尝试返回一个如下所示的列表。
EMPID COUNT
1 5
2 7
3 10
我正在尝试将存储库编写为Dictionary并在g => g处出现错误。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;
}
}
如果您更改此设置:
ToDictionary(g => g.Key, g => g.Count);
到以下内容:
ToDictionary(g => g.Key, g => g.Count());
你会得到你想要的。您应该执行此操作的原因取决于GroupBy
返回的结果。根据规格
组子句返回一个序列IGrouping包含匹配该组的密钥值零个或多个项目的对象。例如,您可以根据每个字符串中的第一个字母对字符串序列进行分组。在这种情况下,第一个字母是键,类型为char,存储在每个IGrouping对象的Key属性中。编译器推断密钥的类型。
您要获取的是每个组中的项目数。由于您有一个序列,因此可以通过调用该Count
方法来获取序列中的项目数。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句