2012-02-06 55 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);