Подтвердить что ты не робот

Если результат 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) //?
{

}
4b9b3361

Ответ 1

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

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

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

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

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

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

Ответ 2

if(!LinqResult.Any()) //?
{

}