2016-08-31 9 views
0

У меня есть список List<OfferComparison> Comparison. Я хочу проверить, есть ли у всех предметов Value == null в состоянии if.Проверьте нулевое значение в списке, используя linq

Как это сделать с помощью linq?

public class OfferComparison : BaseModel 
{ 
    public string Name { get; set; } 
    public string Value { get; set; } 
    public bool Valid { get; set; } 
} 
+2

Worth закладки - https://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b – jdphenix

+0

@jdphenix Спасибо за полезную ссылку – Insafian

ответ

9

Использование метода LINQ из All:

var result = Comparison.All(item => item.Value == null) 

В основном то, что она делает, это перебирать все элементы коллекции и проверить предикат для каждого из них. Если один не соответствует - результат неверен

+0

@Gilad Ссылка вы предоставили из LINQ документации имеет очень ценную информацию. Спасибо :) – Insafian

+0

@Insafian - Добро пожаловать :) Я использую его много –

+0

@DonaldJansen - спасибо за это :) –

3

Вы можете проверить эту Linq заявление

var isNull = Comparison.All(item => item.Value == null); 
0

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

var result = !Comparison.Exists(o => o.Value != null); 

Я бы ожидать, этот запрос, чтобы выйти после первого непустое значение было найдено, и поэтому будет немного более эффективным.

Обновление: Из документации Enumerable.All:

Перечисление источника прекращается, как только результат может быть определен.

Следовательно, использование All, вероятно, не приведет к обработке всего списка после получения ненулевого значения.

Таким образом, вышеупомянутое возможное увеличение производительности вряд ли произойдет, и оба решения, вероятно, не будут отличаться.

Смежные вопросы