2011-06-10 84 views
6

我使用“Linq的”过滤的对象名单,对他们进行排序,像LINQ排序和顺序按说明

myList.Where(x => x.Item!= "SF" && x.AdSize == minadSize) 
     .OrderBy(x => x.ManufacturingDate) 
     .OrderBy(x=>x.ExpiryDate); 

我怀疑我是否这样做是正确的还是不说是,如果我想对多个字段“排序”,那么是否有必要使用多个Order By子句着它与单一的“排序依据”

回答

14

不要使用多个OrderBy调用来完成 - 使用之后ThenByOrderBy

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); 
+0

谢谢@Jon我想知道这个场景一定有什么东西 – Deepesh 2011-06-10 11:46:29