2009-11-09 6 views
0

j'ai liste des articles IList avec des données qui ressemble la liste suivante:Comment filtrer les éléments de liste en double

GenId  TestMode 
    1   0 
    1   1 
    3   0 
    3   1 
    4  NULL 
    2  NULL 

je veux supprimer l'index de GenId de ma liste qui ont TestMode == 0 si le même GenId a un TestMode == 1.

Est-ce que quelqu'un a une façon concise de faire cela?

Répondre

1

LINQ est très bon pour les opérations d'exécution sur des collections d'objets. La requête suivante devrait vous donner ce que vous cherchez:

var query = list.Where(i => i.TestMode == 1 || 
        !list.Exists(i2 => i2.GenId == i.GenId && i2.TestMode == 1)); 

foreach (var item in query) { 
    // do something with items. 
} 

Qu'est-ce que cela ne se cherche un élément où TestMode est égal à 1 (et comprend le cas échéant), ou autre vérifie s'il y a une autre élément où TestMode est égal à 1 et exclut si ces enregistrements existent.

+0

cela a fait le travail - merci. – CurlyFro

Questions connexes