读书人

LINQ 中 CASE的有关问题

发布时间: 2013-09-09 20:31:09 作者: rapoo

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) };

读书人网 >.NET

热点推荐