0

LINQ で以下を複製するにはどうすればよいですか

SELECT KEY_COLUMN,
        CASE WHEN SUM(COLUMN2) < 0 THEN SUM(COLUMN2) ELSE 0 END AS NewColumn
FROM TABLE
GROUP BY KEY_COLUMN

今まで私は次のことを思いつくことができました

var result = from a in source
               group a by a.Key_Column
                   into g
                   select new
                   {
                       Key_Column = g.Key,
                       NewColumn = g.Where(item => item.Column2 < 0)
                                    .Sum(item => item.Column2)
};

上記のコードは、Column2 が負の数かどうかを判断する前に実際に合計していません。

4

2 に答える 2

2
var query = from a in db.Table
            group a by a.Key_Column into g
            let sum = g.Sum(item => item.Column2)
            select new {
               Key_Column = g.Key,
               NewColumn = sum < 0 ? sum : 0
            };
于 2013-01-12T00:44:30.633 に答える
0

これは同じではありませんか?

var query = from r in db.Table
  group r by r.KEY_COLUMN into g
  select new {
    KEY_COLUMN = g.Key,
    NewColumn = g.Sum(x => x.COLUMN2) < 0 ? g.Sum(x => x.COLUMN2) : 0
};
于 2013-01-12T00:51:26.067 に答える