LINQ 中 CASE的问题
本帖最后由 ziybb 于 2013-09-08 21:38:14 编辑
var obj = from t in context.Table2
select new
{
t.TYPE,
M = (t.TYPE == "0" ? context.Table2.Select(a => a.MONEY).Sum() : t.TYPE == "1" ? context.Table2.Select(b => b.MONEY).Sum() : 0)
};
我想根据TYPE字段值的不同计算出MONEY的和,但是这样写会生成CROSS JOIN连接。我想知道应该怎么写才正确? linq
[解决办法]
var obj = from t in context.Table2
let temp=context.Table2.Sum(a => a.MONEY)
select new
{
t.TYPE,
M = (t.TYPE == "0" ? temp : t.TYPE == "1" ? temp : 0)
};
[解决办法]
var obj = from t in context.Table2
group t by t.Type into g
select new { Type = g.Key, M = g.Sum(x => x.Money) };