我正在使用“Linq”过滤对象列表并对其进行排序,例如
myList.Where(x => x.Item!= "SF" && x.AdSize == minadSize)
.OrderBy(x => x.ManufacturingDate)
.OrderBy(x=>x.ExpiryDate);
我怀疑我是否做得对,如果我想在多个字段上“排序”那么是否有必要使用多个Order By子句,不能用单个“OrderBy”来完成
答案 0 :(得分:14)
不要使用多个OrderBy
来电 - 使用OrderBy
后跟ThenBy
:
var query = myList.Where(x => x.Item!= "SF" && x.AdSize == minadSize)
.OrderBy(x => x.ManufacturingDate)
.ThenBy(x => x.ExpiryDate); // Could add more ThenBy calls
如果您使用OrderBy
两次,它将按到期日期重新订购已按日期排序的列表,而我假设您只想按商品的到期日期排序等于制造日期,这就是上面所做的。
显然还有ThenByDescending
方法。例如:
var query = people.OrderBy(x => x.LastName)
.ThenBy(x => x.FirstName)
.ThenByDescending(x => x.Age)
.ThenBy(x => x.SocialSecurity);