如何使用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();
ThenByDescending
是ThenByDescending
的一个扩展方法,它是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”