2011-06-10 8 views
6

J'utilise « Linq » pour filtrer la liste des objets et de les trier, commeLINQ Trier par et Trier par Desc

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

Je doute que je fais droit ou non qui est si je veux « tri » sur plusieurs champs est alors nécessaire d'utiliser plusieurs clause Order By ne peux pas qu'il soit fait avec le single « OrderBy »

Répondre

14

ne pas utiliser plusieurs OrderBy appels - Utilisation OrderBy suivie 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 

Si vous utilisez OrderBy deux fois, il réordonner la liste déjà par ordonnée jour par expiration jour, alors que je suppose que vous voulez seulement commander par date de péremption des produits avec une égale date de fabrication, qui est ce que le ci-dessus fait. Il est évident qu'il existe également une méthode ThenByDescending. Par exemple:

var query = people.OrderBy(x => x.LastName) 
        .ThenBy(x => x.FirstName) 
        .ThenByDescending(x => x.Age) 
        .ThenBy(x => x.SocialSecurity); 
+0

Merci @Jon Je me demandais s'il devait y avoir quelque chose pour ce scénario – Deepesh