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