リスト内のリストからレコードを取得するLambda式

私は次のようなクラスを持っています:

public class Wrapper
{
    public Wrapper();

    public Class1 c1 { get; set; }
    public List lstC2 { get; set; }
}

Class2は次のとおりです。

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

何らかの方法でWrapperクラスのオブジェクトのリストを取得します

     List lstWrap = SomeMethod();

今、lstWrapからすべてのレコードを削除したいのですが、lstC2のラムダ式を使用するレコードのdate1が今日よりも少なくなっています。私は RemoveAll 機能を使用しようとしましたが、結果を満たすことができませんでした。 ありがとうございました。

0

2 答え

このような状況では、.All()または.Any()を使用します。

var lts = new List();
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));
0
追加された

少なくとも1つの日付が今日よりも小さい項目を削除するには、次のようにします。

 lstWrap.RemoveAll(l=>l.lstC2.Count(d=>d.date10);
0
追加された