2009-11-16 3 views
18

나는이 사이트에 대한 간단한 검색을 수행하여이를 검색했지만 좋은 예를 찾을 수 없습니다. 나는 여전히 전체 "람다 식 (Lambda Expressions)"에 대해 머리를 쓰려고 노력하고있다.VB.Net 람다 식을 사용하여 여러 열을 주문하는 방법

아무도 여기에 VB.Net 및 Linq-SQL을 사용하여 여러 열을 주문하는 예제를 람다 식으로 사용할 수 있습니까?

Return _dbContext.WebCategories.OrderBy(Function(c As WebCategory) c.DisplayOrder).ToList 

참고 :

다음은 결과를 정렬하는 단일 열을 사용하여 정렬 된 목록을 반환하는 기존 코드입니다 WebCategory 객체 (외래 키 기준) 자식 웹 페이지 개체가 있습니다. 먼저 WebPage.DisplayOrder로 주문한 다음 WebCategory.DisplayOrder로 주문하고 싶습니다.

아래처럼 주문을 묶어 보았습니다. 컴파일되고 실행되었지만 원하는 순서대로 데이터를 반환하지 않은 것 같습니다.

Return _dbContext.WebCategories.OrderBy(Function(c As WebCategory) c.DisplayOrder).OrderBy(Function(c As WebCategory) c.WebPage.DisplayOrder).ToList 

미리 감사드립니다.

답변

39

빠른 Google 검색에서 this MSDN article을 발견했습니다. 내가 무엇을 당신이 찾고있는 것은이 추측 :

Return _dbContext.WebCategories.OrderBy(Function(c As WebCategory) c.DisplayOrder). _ 
ThenBy(Function(c As WebCategory) c.WebPage.DisplayOrder).ToList 
+0

감사합니다, 그게 내가 찾던 바로거야. 내가 물어볼 수있는 기사를 찾는데 사용한 Google 검색어는 무엇입니까? – camainc

+1

와우, 내가하고 있었던 (내가 생각한) 정확하게 이것이고 작동하지 않을 것이라고, 나는 일종의 Linq 관련 예외를 얻고 있었다 ... 엄청난 좌절감을 느끼고 ... 그때 나는 마지막 "잊어 버린 것을 발견했다. 목록 "부분. 돌이켜 보면 적절한 데이터 유형이 필요하다는 것이 확실합니다. 그러나 나는 "나무를위한 숲"순간을 보냈습니다. 정보 주셔서 감사합니다! – evilspoons

12

당신은이 같은 ThenBy을 사용해야합니다

Return _dbContext.WebCategories.OrderBy(Function(c As WebCategory) c.DisplayOrder) _ 
           .ThenBy(Function(c As WebCategory) c.WebPage.DisplayOrder) _ 
           .ToList() 
+1

감사! 당신은 HuBeza와 같은 시간에 이것을 대답했지만, 당신이 이미 그보다 더 많은 휘장을 가지고 있기 때문에 나는 그에게 대답을했습니다. – camainc

+0

BTW : IComparer가 필요하면 두 번 사용해야합니다 (.OrderBy에는 한 번, .ThenBy 명령에는 한 번). 그냥', MyOwnIComparer'를 추가하고 클래스에 MyOwnIComparer라는 이름으로 코드를 추가하십시오. – PeterCo

관련 문제