2013-11-22 36 views
2

我構建了一個按複合條件排序表的SQL查詢。 這裏是用相同的原理,例如:(表託託包括3周的cols:ID,NUM1,NUM2)?在C#中使用If Else的Lambda表達式

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此查詢(使用\否則當)

謝謝!

+0

想想你缺少蘭巴的點,個人。你在使用什麼提供商? – Arran

+0

也許Linq語法會更好,就像'從dbToto group中的t'...' – user2622016

回答

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