Лямбда-выражение для получения записей из списка в списке - PullRequest
0 голосов
/ 06 февраля 2012

У меня есть следующий класс:

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 меньше, чем сегодня, для любой записи в lstC2 с использованием лямбда-выражения. Я попытался использовать функцию RemoveAll , но не смог достичь результатов. Спасибо.

Ответы [ 2 ]

0 голосов
/ 06 февраля 2012

в этих ситуациях я бы использовал .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));
0 голосов
/ 06 февраля 2012

, если вы хотите удалить элемент хотя бы с одной датой, которая меньше, чем сегодня, используйте:

 lstWrap.RemoveAll(l=>l.lstC2.Count(d=>d.date1<DateTime.Today)>0);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...