C#中的Lambda表达式使用If \ Else

时间:2013-11-22 16:15:49

标签: c# sql visual-studio-2010 lambda

我构建了一个SQL Query,它通过复杂的Condition来命令表。 这是一个具有相同原理的示例:(表Toto包括3个cols:id,num1,num2)

select  t.id 
from Toto as t
group by t.id
order by sum(case when t.id<100 Then t.num1 ELSE t.num2 END)

我的问题是,有选项可以在Lambda中编写此查询吗?(使用时\ else)

谢谢你!

1 个答案:

答案 0 :(得分:3)

它看起来像这样:

db.Toto 
  .GroupBy(t => t.id)
  .OrderBy(g => g.Sum(t => t.id<100 ? t.num1 : t.num2)
  .Select(g => g.Key)  // since you're grouping by Id

它的清洁等同于:

db.Toto 
  .GroupBy(t => t.id)
  .OrderBy(g => g.Sum(t => {
                              if (t.id<100)
                                  return t.num1; 
                              else
                                  return t.num2;
                           }
                      )
  .Select(g => g.Key)  // since you're grouping by Id