Lambda Expression从列表中的列表中获取记录

时间:2012-02-06 10:48:47

标签: list 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; }
} 

我通过某种方法得到了Wrapper类的对象列表

     List<Wrapper> lstWrap = SomeMethod();

现在我想删除lstWrap中的所有记录,其中date1小于今天,使用lambda表达式在lstC2中的任何记录。我尝试使用 RemoveAll 功能,但无法满足结果。 谢谢。

2 个答案:

答案 0 :(得分:0)

如果您要删除至少有一个日期少于今天的项目,请使用:

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

答案 1 :(得分:0)

在这些情况下,我会使用.All()或.Any()

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

编辑:

要删除所有内容,我仍然会使用.Any()

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