我有一个课程如下:
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 功能,但无法满足结果。 谢谢。
答案 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));