2016-09-06 4 views
0

Linq를 사용하여 다음 SQL 문을 수행하려면 어떻게해야합니까? myColumnName 동물의 목록을 포함하고 내가 그 열을 기준으로 정렬하고 싶지만, 고양이가 다음 결과 곰의 첫 번째 표시 할 경우linq 문에서 문자열을 순서대로 표시하는 방법

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

, 이것은 Linq에 문이 작업을 수행 할 수 있습니까?

+2

- 단지 C#을 조건식을 작성, 예를 들어, 'x from myTable orderby x.myColumnName == "Cats"? 1 : x.myColumnName == "베어"? 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)