如何在 linq 中使用 orderby 和 2 个字段? [复制]

Posted

技术标签:

【中文标题】如何在 linq 中使用 orderby 和 2 个字段? [复制]【英文标题】:How to use orderby with 2 fields in linq? [duplicate] 【发布时间】:2010-01-01 21:20:30 【问题描述】:

假设我在数据库表中有这些值

id = 1
StartDate = 1/3/2010
EndDate =  1/3/2010

id = 2
StartDate = 1/3/2010
EndDate = 1/9/2010

到目前为止,我的 linq 已经有了这个 orderby

var hold = MyList.OrderBy(x => x.StartDate).ToList();

我想订购它,但也使用结束日期。

就像我想要的顺序一样

id 2
id 1

所以endDates 更大的优先。我不确定是否需要更改它以使用一些比较功能或其他东西。

【问题讨论】:

【参考方案1】:
MyList.OrderBy(x => x.StartDate).ThenByDescending(x => x.EndDate);

【讨论】:

【参考方案2】:

使用ThenByDescending:

var hold = MyList.OrderBy(x => x.StartDate)
                 .ThenByDescending(x => x.EndDate)
                 .ToList();

你也可以使用查询语法说:

var hold = (from x in MyList
           orderby x.StartDate, x.EndDate descending
           select x).ToList();

ThenByDescendingIOrderedEnumerable 上的扩展方法,这是OrderBy 返回的内容。另见相关方法ThenBy

【讨论】:

谢谢你——你也知道结构保持的类型吗? MyList 项目的列表?【参考方案3】:

如果您有两个或更多字段要订购,请尝试以下操作:

var soterdList = initialList.OrderBy(x => x.Priority).
                                    ThenBy(x => x.ArrivalDate).
                                    ThenBy(x => x.ShipDate);

您可以使用 clasole "ThenBy" 添加其他字段

【讨论】:

【参考方案4】:
MyList.OrderBy(x => x.StartDate).ThenByDescending(x => x.EndDate);

请注意,您也可以在 OrderBy 中使用 Descending 关键字(如果需要)。所以另一个可能的答案是:

MyList.OrderByDescending(x => x.StartDate).ThenByDescending(x => x.EndDate);

【讨论】:

【参考方案5】:

VB.NET

 MyList.OrderBy(Function(f) f.StartDate).ThenByDescending(Function(f) f.EndDate)

  From l In MyList Order By l.StartDate Ascending, l.EndDate Descending

【讨论】:

From l In MyList Order By l.StartDate Ascending Order By l.EndDate DescendingFrom l In MyList Order By l.StartDate Ascending, l.EndDate Descending有区别吗? @Oleksandr 是的,阿卜杜勒的变种相当于只做二阶,所以不正确。 @John 和 @oleksandr 感谢您指出错误尚未更正

以上是关于如何在 linq 中使用 orderby 和 2 个字段? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何动态指定 Linq OrderBy 参数? [复制]

当我在 LINQ 查询中切换 Distinct() 和 OrderBy() 时,性能会发生变化吗? [关闭]

如何通过 orderBy 对嵌套的 Linq 对象进行排序

在linq中怎样进行排序操作

C#解决Linq OrderBy() 失效的小技巧

Linq语句OrderBy的使用