日期:2014-05-20  浏览次数:20790 次

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