IEnumerable не имеет Метода счета

У меня есть следующий метод:

public bool IsValid
{
  get { return (GetRuleViolations().Count() == 0); }
}

public IEnumerable<RuleViolation> GetRuleViolations(){
  //code here
}

Почему это - это, когда я делаю .Count() выше его подчеркивается в красном?

Я получил следующую ошибку:

Ошибка 1 'Система. Наборы. Универсальный. IEnumerable' не содержит определение для 'количества' и никакой дополнительный метод 'количество', принимающее первый аргумент типа 'Система. Наборы. Универсальный. IEnumerable' мог быть найден (Вы пропускаете директиву использования или ссылку на сборку?) c:\users\a\documents\visual studio 2010\Projects\NerdDinner\NerdDinner\Models\Dinner.cs 15 47 NerdDinner

76
задан Keith Pinson 11 June 2013 в 18:10
поделиться

2 ответа

Вы добавляете:

using System.Linq;

вверху исходного кода и убедитесь, что у вас есть ссылка на сборку System.Core.

Count () - это метод расширения, предоставляемый статическим классом System.Linq.Enumerable для LINQ to Objects и System.Linq.Queryable для LINQ to SQL. и другие сторонние поставщики.

РЕДАКТИРОВАТЬ: Фактически, использование Count () здесь относительно неэффективно (по крайней мере, в LINQ to Objects). Все, что вам нужно знать, это есть ли какие-нибудь элементы или нет, верно? В этом случае лучше подходит Any () :

public bool IsValid
{
  get { return !GetRuleViolations().Any(); }
}
151
ответ дан 24 November 2019 в 11:15
поделиться

IEnumeration не имеет метода с именем Count () . Это просто некая «последовательность элементов». Используйте, например, List , если вам явно нужно количество элементов. Если вы используете Linq, имейте в виду, что метод расширения Count () может фактически пересчитать количество элементов каждый раз, когда вы его вызываете.

2
ответ дан 24 November 2019 в 11:15
поделиться
Другие вопросы по тегам:

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