我使用“
Linq”来过滤对象列表并对它们进行排序,比如
myList.Where(x => x.Item!= "SF" && x.AdSize == minadSize) .OrderBy(x => x.ManufacturingDate) .OrderBy(x=>x.ExpiryDate);
我怀疑我是否做得对,如果我想在多个字段上“排序”那么是否有必要使用多个Order By子句,不能用单个“OrderBy”来完成
解决方法
不要使用多个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);