-1

我有一个返回汇总表的 LINQ 函数。

 private DataTable CreateSummaryFocusOfEffortData()
    {
        var result = ReportData.AsEnumerable()
            .GroupBy(row => new
                                {
                                    Value = row.Field<string>("Value"),
                                    Description = row.Field<string>("Description")

                                })
            .Select(g =>
                        {
                            var row = g.First();
                            row.SetField("Hours", g.Sum(r => r.Field<double>("Hours")));

                            return row;
                        });

      return result.CopyToDataTable();
    }

现在我想向这个函数添加一个 WHERE 子句,以便它只总结列表中存在的字段的行。类似于 sql 中的 IN 运算符。例如:假设我有一个包含值 (1,2,3) 的列表,我想以 where 子句为基础,其中包含列表中的值。

4

1 回答 1

1

只是一个如何尝试的例子:

private DataTable CreateSummaryFocusOfEffortData(List<int> yourList)
{
    var result = ReportData.AsEnumerable()
        .GroupBy(row => new
                            {
                                Value = row.Field<string>("Value"),
                                Description = row.Field<string>("Description")

                            })
        .Select(g =>
                    {
                        var row = g.First();
                        row.SetField("Hours", 
                                     g.Where(r=>yourList.Contains(r.Field<int>("Id")))
                                      .Sum(r => r.Field<double>("Hours")));

                        return row;
                    });

  return result.CopyToDataTable();
}
于 2012-09-25T01:06:07.887 回答