-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 に答える