返回计数列表并按id linq分组为sql

时间:2016-06-27 17:15:46

标签: c# linq linq-to-sql

我有一张叫做清单的表:

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;
        }
    }

1 个答案:

答案 0 :(得分:2)

如果你改变了这个:

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

以下内容:

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

你会得到你想要的。你应该这样做的原因取决于GroupBy返回的结果。根据{{​​3}}

  

group子句返回IGrouping的序列   包含零个或多个与键值匹配的项的对象   群组。例如,您可以根据字符串序列进行分组   到每个字符串中的第一个字母。在这种情况下,第一个字母是   键和char类型,并存储在每个键的Key属性中   IGrouping对象。编译器推断出的类型   键。

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