Могу ли я "остановить" цепочку методов LINQ на полпути? - PullRequest
0 голосов
/ 16 мая 2018

В моем коде есть следующая цепочка методов:

MyFormCollection
    .Select(form => Handler.HandleForm(form))
    .Select(form =>
    {
        form.Id = Guid.Empty;
        form.OtherProperty = existingValue;
        return form;
    })
    .ToList()
    .ForEach(FormService.SaveForm);

Проблема с этим кодом состоит в том, что Handler.HandleForm() может возвращать ноль в некоторых случаях.Если это так, я хочу пропустить остальные методы для этой формы и просто перейти к следующему элементу в списке.

Есть ли способ сделать это, не выполняя нулевую проверку в каждомшаг?

Ответы [ 2 ]

0 голосов
/ 16 мая 2018

Другой подход - упростить ваш запрос, добавив все в .ForEach:

MyFormCollection.ToList()
    .ForEach(form => {
        if((form = Handler.HandleForm(form)) != null)
        {
           form.Id = Guid.Empty;
           form.OtherProperty = existingValue;
           FormService.SaveForm(f))
        }
     }
0 голосов
/ 16 мая 2018

Я предлагаю добавить Where:

MyFormCollection
    .Select(form => Handler.HandleForm(form))
    .Where(form => form != null) // <- from this line on not null form(s) only
    ...
...