IEnumerable에는 Count 메서드가 없습니다.
다음과 같은 방법이 있습니다.
public bool IsValid
{
get { return (GetRuleViolations().Count() == 0); }
}
public IEnumerable<RuleViolation> GetRuleViolations(){
//code here
}
.Count()
위에서 할 때 빨간색 밑줄이 그어진 이유는 무엇입니까?
다음과 같은 오류가 발생했습니다.
오류 1 'System.Collections.Generic.IEnumerable'에 'Count'에 대한 정의가 포함되어 있지 않습니다. 'System.Collections.Generic.IEnumerable'유형의 첫 번째 인수를 허용하는 확장 메서드 'Count'를 사용할 수 없습니다. 지시문 또는 어셈블리 참조를 사용합니까?) c : \ users \ a \ documents \ visual studio 2010 \ Projects \ NerdDinner \ NerdDinner \ Models \ Dinner.cs 15 47 NerdDinner
다음을 추가합니다.
using System.Linq;
System.Core 어셈블리에 대한 참조가 있는지 확인합니다.
Count()
System.Linq.Enumerable
LINQ to Objects, LINQ to SQL 및 기타 out-of-process 공급자 에 대해 정적 클래스에서 제공하는 확장 메서드 입니다.System.Linq.Queryable
편집 : 사실, Count()
여기서 사용하는 것은 최후의 방식으로 비효율적입니다 (LINQ to Objects에서는). 당신이 알고 싶은 것이 있는지 요소 가 있는지 여부입니다 . 이 경우 Any()
더 적합합니다.
public bool IsValid
{
get { return !GetRuleViolations().Any(); }
}
Any()
또는 Count()
Linq의 메소드는 제네릭 유형에 작동합니다.
IEnumerable<T>
IEnumerable
이없는 유형 단순 이있는 경우
IEnumerable<object>
대신.
IEnumeration
라는 메서드가 없습니다 Count()
. 그것은 유일한 "요소의 시퀀스"일뿐입니다. 예를 들어 List
명시 적으로 요소 수가 필요한 경우 사용하십시오 . Linq를 사용하는 경우 확장 메서드 Count()
는 실제로 호출 할 때마다 요소 수를 다시 계산할 수 있습니다.
어때 :
public bool IsValid
{
get { return (GetRuleViolations().Cast<RuleViolation>().Count() == 0); }
}
참고 URL : https://stackoverflow.com/questions/2659290/ienumerable-doesnt-have-a-count-method
'ProgramingTip' 카테고리의 다른 글
페이지를 스크롤하지 않고 위치 해시를 제거해야합니까? (0) | 2020.10.16 |
---|---|
Windows에서 OpenSSL 인증서 만들기 (0) | 2020.10.16 |
동일한 솔루션에서 서로 다른 두 버전의 log4net 참조 (0) | 2020.10.16 |
배열에서 첫 번째 요소를 제거하는 가장 좋은 방법은 무엇입니까? (0) | 2020.10.16 |
모델의 특정 필드 만 업데이트합니다. (0) | 2020.10.16 |