2012-02-06 89 views
0

我有一个类如下:Lambda表达式得到从列表记录列表中的

public class Wrapper 
{ 
    public Wrapper(); 

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

其中的Class2是:

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

,我有些弄包装类的对象的列表方法

 List<Wrapper> lstWrap = SomeMethod(); 

现在我想从lstWrap删除所有记录,其中DATE1小于今天在lstC2ü任何记录唱Lambda表达。我尝试使用RemoveAll函数,但无法达到结果。 谢谢。

回答

0
在这种情况下

我会用。所有()或。任何()

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

编辑:

要删除所有我仍然会用。任何()

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

,如果你想与至少一个日这不到今天,使用删除项目:

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