C#LINQ组和计数问题

时间:2014-11-26 14:37:57

标签: c# linq

我有以下查询,将一堆打印机分组,然后计算停机时间。我想要做的是获得每组中有多少台打印机。我不确定是否需要运行两个查询,还是可以在一个查询中完成此操作?

查询:

var records = (from r in SharePoint.Records
    group r by new
    {
        Printer = getValue(r.Values["ows_printer_id_x003a_Device"]),
    } into g
    select new
    {
        Printers = g.Key.Printer,
        CurrentHours = g.Sum(x => getDownTime(x.Values["ows_Downtime"])),
        //  Total = g.Count()
        //CTDHours = g.Sum(x => x.Field<int>("CurrentHours") + x.Field<int>("CTDHours"))
    });

1 个答案:

答案 0 :(得分:0)

var records = (from r in SharePoint.Records
    group r by new
    {
        Printer = getValue(r.Values["ows_printer_id_x003a_Device"]),
    } into g
    select new
    {
        Printers = g.Key.Printer,
        CurrentHours = g.Sum(x => getDownTime(x.Values["ows_Downtime"])),
        Total = g.Count()
    });

Total = g.Count应该有效。

我很好奇为什么你在这里使用getValue(),我认为这就是你的问题所在。 Printer = r.ows_printer_id_x003a_Device不起作用吗?您是否验证了“ows_printer_id_x003a_Device”成员中的数据,并且该部分查询是否产生了您想要的分组?尝试使用LinqPad将其分解。