Если результат Linq пуст

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

var LinqResult = 
    from a in Db.Table
    where a.Value0 == "ninja"
    group a by a.Value1 into b
    select new { Table = b};

if(LinqResult.Count() == 0) //?
{

}
40
задан sooprise 15 July 2010 в 20:43
поделиться

2 ответа

Вам следует избегать использования метода Count () как способа проверки, пуста ли последовательность или нет. У Фила Хаака есть отличная статья в своем блоге , в которой он обсуждает этот антипаттерн.

Count () должен фактически перечислить все элементы последовательности, что может быть дорогостоящим, если последовательность основана на нескольких операциях LINQ (или поступает из базы данных).

Вместо этого вы должны использовать метод расширения Any () , который только пытается увидеть, есть ли хотя бы один элемент в списке, но не перечисляет всю последовательность.

if( !LinqResult.Any() )
{ 
   // your code
} 

Лично я также считаю, что использование Any () , а не Count () лучше выражает ваше намерение, и его легче реорганизовать или надежно изменить в будущем.

Кстати, если вам действительно нужен первый (или единственный) член последовательности, вы должны использовать вместо этого операторы First () или Single () .

95
ответ дан 27 November 2019 в 01:12
поделиться
if(!LinqResult.Any()) //?
{

}
16
ответ дан 27 November 2019 в 01:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: