2013-05-30 3 views
0
Dim receipts As IQueryable(Of ReceiptEntity) = db.Receipts 

'code to filter removed for brevity 

Dim sorts() As String = SortExpression.Split(";") 

For Each sort As String In sorts 
    Dim sortParts() As String = sort.Split(" ") 
    If sortParts(1).ToLower = "true" Then 
     receipts = receipts.OrderBy(Of ReceiptEntity)(sortParts(0).ToString(), SortDirection.Ascending) 
    Else 
     receipts = receipts.OrderBy(Of ReceiptEntity)(sortParts(0).ToString(), SortDirection.Descending) 
    End If 
Next 

SortExpression처럼 온다 "사실 필드 1, FIELD2가 false; FIELD3 사실"여러 동적 주문 Linq에의 엔티티 프레임 워크에

쿼리 필드, 여러 순서가하는 내가 일이 원하는 것은 무엇인지 마지막 순서 만 적용됩니다. 여기서 내가 뭘 잘못하고 있니? 당신은 두 번째 이후의 모든 종류의 작업에 ThenBy 대신 OrderBy를 사용할 필요가

Dim receipts As IOrderedQueryable(Of ReceiptEntity) = db.Receipts.Include(Function(r) r.LineItems).Include(Function(r) r.Payments) 

Dim sorts() As String = SortExpression.Split(";") 
Dim sortParts() As String 
sortParts = sorts(0).Split(" ") 
If sortParts(1).ToLower = "true" Then 
    receipts = receipts.OrderBy(sortParts(0).ToString()) 
Else 
    receipts = receipts.OrderByDescending(sortParts(0).ToString()) 
End If 


For Each sort As String In sorts.Skip(1) 
    sortParts = sort.Split(" ") 
    If sortParts(1).ToLower = "true" Then 
     receipts = receipts.ThenBy(sortParts(0).ToString()) 
    Else 
     receipts = receipts.ThenByDescending(sortParts(0).ToString()) 
    End If 
Next 

답변

1

:


는 다음과 같은 작업 결과가 모습입니다.

+0

감사합니다. 또한 ThenBy 및 ThenByDescending을 얻기 위해 선언에서 IQueryable (T) 대신 IOrderedQueryable (T)를 사용해야합니다. – BlackICE

관련 문제