Если у меня есть запрос 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) //?
{
}
Вам следует избегать использования метода Count ()
как способа проверки, пуста ли последовательность или нет. У Фила Хаака есть отличная статья в своем блоге , в которой он обсуждает этот антипаттерн.
Count ()
должен фактически перечислить все элементы последовательности, что может быть дорогостоящим, если последовательность основана на нескольких операциях LINQ (или поступает из базы данных).
Вместо этого вы должны использовать метод расширения Any ()
, который только пытается увидеть, есть ли хотя бы один элемент в списке, но не перечисляет всю последовательность.
if( !LinqResult.Any() )
{
// your code
}
Лично я также считаю, что использование Any ()
, а не Count ()
лучше выражает ваше намерение, и его легче реорганизовать или надежно изменить в будущем.
Кстати, если вам действительно нужен первый (или единственный) член последовательности, вы должны использовать вместо этого операторы First ()
или Single ()
.