【问题标题】:Lambda Expression to get records from list in a listLambda 表达式从列表中的列表中获取记录
【发布时间】:2012-02-06 19:00:16
【问题描述】:

我有一门课如下:

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();

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

【问题讨论】:

    标签: list lambda


    【解决方案1】:

    在这些情况下,我会使用 .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));
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-05
        • 1970-01-01
        • 2017-05-31
        • 2013-03-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多