繁体   English   中英

自定义OrderBy列表

Custom OrderBy on a List

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我试图找出自定义排序列表的最佳方法。 假设T是一个具有日期(DateTime?)属性和状态(字符串)属性的对象。

我有3个案例......

“紧急”:我希望这些在列表的顶部,没有特别的顺序
date = null
status =“紧急”

“正常”:我希望在紧急案件之后按日期排序
date =任何有效的日期/时间
status =“准时”

“稍后”:我希望这些在列表的底部,没有特定的顺序
date = null
status =“稍后”

有什么想法吗? 我应该使用IQuerable对象而不是List吗? 我总是可以.ToList()稍后将对象发送到我的视图。

5 个回复
query = query.OrderBy(x =>
  x.Status == "Urgent" ? 1:
  x.Status == "Normal" ? 2:
  3)
  .ThenBy(x => 
  x.Status == "Urgent" ? null:
  x.Status == "Normal" ? x.Date:
  null);

随机沉思:Ordering是属于查询还是属于类?

不应该太困难,只需使用比较规则使T实现IComparable ,就应该设置。

您需要提供IComparer的实现,然后您可以使用以下重载传递它:

public static IOrderedEnumerable<TSource> OrderBy<TSource, TKey>(
    this IEnumerable<TSource> source,
    Func<TSource, TKey> keySelector,
    IComparer<TKey> comparer
)

请参阅: http//msdn.microsoft.com/en-us/library/bb549422.aspx

我认为最简单的方法是使用linq:

itemsList = itemsList.OrderByDescending(ob => ob.status ).ThenBy(ob => ob.date).ToList();

您可以使用扩展方法:

像这样......

public static IOrderedEmumerable<MyType> OrderForDisplay (this IEnumerable<MyType> input)
{
  return
    input
    .OrderBy(item => item.Status)
    .ThenByDescending(item => item.Status == 1 ? DateTime.MaxDate : item.date);
}
1 为列表自定义OrderBy?

我有一个项目列表,我想创建两种排序方式,按字母顺序和上次修改时间。 这是我所做的: 而且效果很好。 我的问题是我希望除了列表中的所有项目都发生这种情况。 这一项将始终不变,我想确保它始终在列表的顶部。 为此我需要做什么? 如果重要,则c#是lang。 感 ...

3 自定义列表排序

我有一个List&lt;T&gt; ,其中T是我的Event类型,其字段time类型为long 。 此列表从Web服务填充,如果事件没有时间,则值集为0。 我想要做的是按时间按升序排序我的列表,但是在最底部放置时间= 0的项目。 目前我正在以一种黑客的方式实现这一点,我想学习更好的 ...

4 自定义(派生)列表

随意加载你的枪并瞄准,但我想明白为什么你不应该这样做。 我创建了一个自定义类,用于替换List的任何实例(我用它来更新它们后面的XML对象): 这个想法是每当我从这个列表中添加或删除一个项目时,我的绑定事件就会触发,我可以自动处理XML。 这就像一个魅力,到目前为止一切都很好 ...

5 如何自定义列表 ? [重复]

该问题与以下内容完全相同: 错误7,参数1:无法从“”转换为“” 3个答案 我正在尝试自定义列表。 我大部分都知道了,但是遇到了一个问题。 这是我正在使用的代码: 在代码中,您可以看到我正在尝试创建自定义列表。 在这里,您还将看到我拥有的许多课程中的两 ...

6 通过Spark SQL自定义OrderBy

我有两列需要以自定义方式进行排序。 例如: Month列,其排序方式应为从Jan2015年1 Dec(CurrentYear)到Dec(CurrentYear) 并且还假设我有“列”作为“季度”,我希望它按“ Q1-2015 ,“ Q2-2015 ,“ Q4-CurrentYear ...

7 自定义 Orderby/ThenBy

我不确定这是否可行,我正在尝试对数据进行排序/排序/重新排列: 变成这样: 按类型排序,然后按名称排序,但如果代码 = 8,则应该是最后。 代码: ...

2021-04-28 16:47:34 1 53   c#
8 自定义ORDER BY说明

我不久前发现了这个,并且从那时起就一直在使用它; 然而,今天看着它,我意识到我并不完全理解为什么它有效。 有人可以为我解释一下吗? 如果我按s.type订购,则按字母顺序排序。 如果我使用上面的示例,它使用与行位置相同的顺序。 我不明白的是使用!=。 如果我使用=它会以相反的顺 ...

9 带有自定义比较器的 OrderBy 的 Linq 语法

对于具有自定义排序比较器的任何给定 Linq 表达式,有两种格式: 格式 1 格式 2 题: 第二种格式的 order-by 表达式的语法是什么? 不是问题: 如何使用第一种格式中所示的自定义比较器。 红利: 上面列出的两种 Linq 格式是否有实际的正式名称? ...

2012-10-05 20:44:16 4 19477   c#/ linq
10 List .Sort()与List .OrderBy()的实用程序,用于自定义容器类的成员

我发现自己运行了一些旧的3.5框架遗留代码,并发现了一些点,其中有一大堆列表和字典必须以同步方式更新。 我已经确定通过将这些过程融合到新的自定义类的自定义容器类中,我可以使这个过程更容易利用和理解。 然而,有些观点涉及到通过特定内部属性组织这些新容器类的内容。 例如,按一个类的ID号属性排 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM