如何使用linq中的2个字段orderby?

说我在数据库表中有这些值

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

现在我已经为我的linq订单了

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

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

像这样的顺序,我会想这样的

 id 2 id 1 

所以更大的endDates先走。 我不知道如果我需要改变这个使用一些比较function或东西。

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

使用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(); 

ThenByDescendingThenByDescending的一个扩展方法,它是OrderBy返回的。 另请参阅相关方法ThenBy

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 
 MyList.OrderBy(x => x.StartDate).ThenByDescending(x => x.EndDate); 

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

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

如果你有两个或更多的领域订购试试这个:

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

您可以添加其他字段的“ThenBy”