首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Linq到实体框架的多个动态顺序

从Linq到实体框架的多个动态顺序
EN

Stack Overflow用户
提问于 2013-05-30 17:47:23
回答 1查看 1.6K关注 0票数 0
代码语言:javascript
复制
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就像"field1 true;field3 2 false;field3 3 true“一样

我想要的是查询按字段有多个顺序,所发生的是只应用最后一个order。我在这里做错什么了?

工作结果如下所示:

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-30 18:37:50

对于第二个和所有后续的排序操作,您必须使用ThenBy而不是OrderBy

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16842759

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档