【问题标题】:Linq with join distinct and order byLinq with join distinct and order by
【发布时间】:2017-11-05 16:11:48
【问题描述】:

我的查询似乎根本不尊重我的 order by 子句,

有人可以帮我解决这个问题吗?

   Dim Result = ((From z As lnkCategorySubCategory In dbContext.lnkCategorySubCategories
                   Join x As SubItem In dbContext.SubItems On x.Id Equals z.CategoryId
                   Join p As lnkItemsCategory In dbContext.lnkItemsCategories On z.CategoryId Equals p.ItemCategoryId
                   Order By z.IsHeadColumn Descending
                   Order By z.Order Descending
                   Select x.Name)).Distinct

【问题讨论】:

  • 显示结果当前外观的示例和显示应如何排序的另一个示例。

标签: vb.net linq join sql-order-by


【解决方案1】:

如果没有更多信息,我无法告诉您是什么导致了您的问题。但是,如果我要大胆猜测,我建议您更改此设置:

Order By z.IsHeadColumn Descending
Order By z.Order Descending

到这里:

Order By z.IsHeadColumn, z.Order descending

【讨论】:

  • 您在这里进行订购的方式是正确的,我在那里也没有问题,我的问题是“没有选择”我正在执行“订购”的那些列,请看我的回答了解更多信息。感谢您抽出宝贵时间对此做出回应。
【解决方案2】:

我觉得orderby z.IsHeadColumn descending, z.Order descending 应该可以工作

【讨论】:

  • 我添加这个作为单独答案的唯一原因是因为我想知道“Order By”如何编译,考虑到这是一种查询语法(我现在不能投票)。现在我已经发布了,让我添加这么多,您可以使用带有方法语法的“ThenBy”extn 方法。
  • 我感觉的另一件事是连接看起来不正确。不应该是'Join x As SubItem In dbContext.SubItems On x.CategoryId Equals z.Id'?
【解决方案3】:

这里的问题是我没有选择我选择排序的列,所以我需要写一些更像这样的东西来解决这个问题

  Dim Result = ((From z As lnkCategorySubCategory In dbContext.lnkCategorySubCategories
                       Join x As SubItem In dbContext.SubItems On x.Id Equals z.CategoryId
                       Join h As lnkSubItemImageLink In dbContext.lnkSubItemImageLinks On x.Id Equals h.SubItemId
                       Join p As lnkItemsCategory In dbContext.lnkItemsCategories On z.CategoryId Equals p.ItemCategoryId
                       Select x.Name, h.ImageLink, z.IsHeadColumn, z.Order)).Distinct.OrderByDescending(
                       Function(u) u.IsHeadColumn).ThenBy(Function(j) j.Order).ToDictionary(Function(x) x.Name, Function(h) h.ImageLink)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-15
    • 2020-08-13
    相关资源
    最近更新 更多