【发布时间】:2021-11-05 09:19:27
【问题描述】:
我在 sql 中有按此顺序排列的数据。
现在,我想使用 QuestionDataTypeId 和 DisplayOrder 订购此列表,但最后希望此 QuestionDataTypeId = 0。所以最终的结果将是第一行 = 6 然后 7 然后 8 然后 1 到 5。
我想用 C# 和 linq 来实现。
到目前为止我尝试了什么?
这是我的代码,但它不起作用。
var data = entity
.OrderByDescending(m => m.QuestionDataTypeId == 0)
.ThenBy(m => m.QuestionDataTypeId)
.ThenBy(m => m.DisplayOrder);
我已经通过合并 2 个不同的变量来解决这个问题,这些变量分别为 QuestionDataTypeId = 0 和所有其他 QuestionDataTypeId 排序,但只是想知道在单行中对于这种情况什么是正确的 linq。
任何帮助将不胜感激。谢谢!
【问题讨论】:
-
对我来说似乎是一个很好的解决方案。这里建议的类似方法:stackoverflow.com/questions/15023226/…
-
是的,看起来不错,但希望在 linq 中使用这个
-
最终你的 LINQ 将被转换成 SQL,除非你做你的排序客户端,如果可能的话应该避免。
-
同意,但存储在 db 中的数据排列不正确。所以在检索数据时,我必须以这种方式排序。
-
我认为您的第一个排序应该是 OrderBy 而不是 OrderByDescending。试试看:
.OrderBy(m => m.QuestionDataTypeId == 0)