엔티티 프레임 워크를 사용하는 "Order by Col1, Col2"


118

엔티티 프레임 워크를 사용하여 2 개의 열을 정렬해야합니다.

어떻게 된 거죠?

return _repository.GetSomething().OrderBy(x => x.Col1   .. Col2)?

SELECT * FROM Foo ORDER BY Col1, Col2

답변:


245

시도해보십시오 OrderBy(x => x.Col1).ThenBy(x => x.Col2). 어쨌든 EF에만 국한되지 않는 LINQ 기능입니다.


51

또 다른 방법:

qqq.OrderBy(x => new { x.Col1, x.Col2} )

이 방법으로 내림차순을 어떻게 주문합니까?
user551113 2015 년

10
qqq.OrderByDescending (x => new {x.Col1, x.Col2})
parfilko

7
두 개의 문자열 필드에서 EntityFramework Core와 함께 사용하면 "하나 이상의 개체가 IComparable을 구현해야합니다."오류 메시지가 표시됩니다.
sixtstorm1

26

시험:

OrderBy(x => x.Col1).ThenBy(x => x.Col2)

내림차순으로 주문하려면 다음을 시도하십시오.

OrderByDescending (x => x.Col1).ThenByDescending (x => x.Col2)

1

다음 정렬은 DB 수준에서 발생합니다. 반환 된 결과에 없습니다.

시험:

IQueryable<a>.OrderBy("col1 asc, col2 asc")

예 1 :

ctx.CateringOrders.OrderBy("Details.DeliveryDate asc, Details.DeliveryTime asc")

예 2 :

ctx.CateringOrders.OrderBy("{0} {1}, {2} {3}", 
    "Details.DeliveryDate", "asc",
    "Details.DeliveryTime", "asc" 
)

IQueryable<a>엔터티 쿼리는 어디에 있고, "col1 asc"열 1이고 정렬 방향 "col2 asc"은 열 2이고 정렬 방향입니다.


-6

이것은 Telerik의 Grid 또는 다른 Telerik의 DataSource 구성 요소에서는 작동하지 않습니다. 사전 필터링 된 IQueryable 개체를 사용하지만 정렬 설정을 효과적으로 재정의하는 마지막 단계로 항상 자동으로 정렬됩니다.

따라야합니다 : 그리드에서 기본 정렬 지정

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.