2012-02-06 1 views
0

J'ai une classe comme suit:Lambda Expression pour obtenir les enregistrements de la liste dans une liste

public class Wrapper 
{ 
    public Wrapper(); 

    public Class1 c1 { get; set; } 
    public List<Class2> lstC2 { get; set; } 
} 

où Classe2 est:

public class Class2 
{ 
    public DateTime date1 { get; set; } 
} 

et j'obtenir la liste des objets de Wrapper classe par certains méthode

 List<Wrapper> lstWrap = SomeMethod(); 

maintenant, je veux supprimer tous les enregistrements de lstWrap où date1 est inférieure à aujourd'hui pour tout document lstC2 u chante l'expression lambda. J'ai essayé d'utiliser RemoveAll mais je n'ai pas pu rencontrer les résultats. Merci.

Répondre

0

dans ces situations, j'utiliser .Toutes() ou .Tout()

var lts = new List<Wrapper>(); 
var res = lts.Where (l => l.lstC2.All(d => d.date1 >= DateTime.Now)); 

EDIT:

Pour enlever tout ce que je continue à utiliser la .Tout()

lstWrap.RemoveAll(l => l.lstC2.Any(a => a.date1 < DateTime.Now)); 
0

si vous voulez supprimer l'élément avec au moins une date dont moins aujourd'hui, utilisez:

lstWrap.RemoveAll(l=>l.lstC2.Count(d=>d.date1<DateTime.Today)>0); 
Questions connexes