2016-09-06 6 views
0

Linqを使用して次のSQL文を実行するにはどうすればよいですか?linq文で文字列を最初に順番に表示する方法

SELECT * FROM myTable 
ORDER BY 
CASE myColumnName 
WHEN 'Cats' THEN 1 
WHEN 'Bear' THEN 2 
ELSE 99 
END, myColumnName 

myColumnNameは、動物のリストが含まれており、私はその列でソートしたいのですが、猫は、結果くまで最初に表示したい場合は、これは、LINQの文でこれを行うことは可能でしょうか?

+2

- ちょうどC#の条件式を作成して、例えば'からxからmyTable orderby x.myColumnName ==" Cats "? 1:x.myColumnName == "Bear"? 2:99 select x' –

答えて

2

何かのように:問題は何

var res = from p in context.myTable 
      let oOrder = (p.myColumnName == "Cats" ? 1 : 
         p.myColumnName == "Bear" ? 2 : 99) 
      orderby oOrder, p.myColumnName 
      select p; 
+1

猫や熊でなければ列の値で注文することを忘れないでください。 – StriplingWarrior

+0

@StriplingWarrior、良いキャッチ。 –

2

ダイレクト翻訳は次のようになります。

myTable 
    .OrderBy(t => 
     t.MyColumnName == "Cats" ? 1 
     : t.MyColumnName == "Bears" ? 2 
     : 99) 
    .ThenBy(t => t.MyColumnName) 
関連する問題