【问题标题】:IQueryable OrderBy by Equal [closed]IQueryable OrderBy by Equal [关闭]
【发布时间】:2019-12-26 18:56:01
【问题描述】:

有没有办法以特定值开始在IQueryable 上应用OrderBy

例如:我有这个关注实体

Name   | Age  | Type |
Marcos |  15  |  1   |
Andrew |  23  |  2   |
Phelip |  18  |  2   |
Jhonny |  14  |  3   |

我尝试了以下代码,但没有成功:

var result =  Query.OrderBy(x => x.Type == 2);

有什么想法吗?

【问题讨论】:

  • 你能解释一下“它没有用”吗?请提供您的预期输出和实际输出,以便我们帮助您到达您想去的地方。
  • 为什么你有x => x.Type == 2,而你只有x => x.Type
  • 如果您希望Type == 2 位于顶部的行,请尝试Query.OrderByDescending(x => x.Type == 2);
  • 您是否只想显示具有Type >= 2 的结果?
  • 您期望输出什么:1,2,2,32,2,1,3

标签: c# linq iqueryable


【解决方案1】:

我假设您希望列表按2,2,1,3 的顺序排列:首先列出所有2 记录,其余按正常顺序排列。

应该这样做:

var result =  Query.OrderBy(x => x.Type == 2 ? -1 : x.Type);

Type2 时,这会将用于订购的值更改为-1。由于-1 小于您的所有其他值,它们将显示在列表顶部。

如果您要拥有Type-1 的记录,那么您需要选择不同的值。它必须小于所有其他值。

【讨论】:

  • Query.OrderByDescending(x => x.Type == 2).ThenBy(x => x.Type) 也应该可以工作。
  • @mm8 这是一个更好的解决方案,因为它不依赖于小于所有预期值的“神奇”数字。
猜你喜欢
  • 1970-01-01
  • 2012-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-23
  • 2023-03-14
  • 2010-10-17
相关资源
最近更新 更多