Ich habe die folgende Methode:
public bool IsValid
{
get { return (GetRuleViolations().Count() == 0); }
}
public IEnumerable<RuleViolation> GetRuleViolations(){
//code here
}
Warum ist es, wenn ich es .Count()
oben mache, rot unterstrichen?
Ich habe folgenden Fehler erhalten:
Fehler 1 'System.Collections.Generic.IEnumerable' enthält keine Definition für 'Count' und es konnte keine Erweiterungsmethode 'Count' gefunden werden, die ein erstes Argument vom Typ 'System.Collections.Generic.IEnumerable' akzeptiert (fehlt Ihnen ein Verwenden Sie eine Direktive oder eine Assembly-Referenz?) c: \ Benutzer \ a \ Dokumente \ Visual Studio 2010 \ Projekte \ NerdDinner \ NerdDinner \ Models \ Dinner.cs 15 47 NerdDinner
c#
asp.net
enumerable
Aherlambang
quelle
quelle
Antworten:
Sie fügen hinzu:
using System.Linq;
Stellen Sie sicher, dass Sie einen Verweis auf die System.Core-Assembly haben.
Count()
ist eine Erweiterungsmethode, die von derSystem.Linq.Enumerable
statischen Klasse für LINQ to Objects sowieSystem.Linq.Queryable
für LINQ to SQL und andere Out-of-Process-Anbieter bereitgestellt wird.BEARBEITEN: Tatsächlich ist die Verwendung
Count()
hier relativ ineffizient (zumindest in LINQ to Objects). Alles , was Sie wissen wollen , ist , ob es irgendwelche Elemente oder nicht, nicht wahr? In diesem FallAny()
passt besser:public bool IsValid { get { return !GetRuleViolations().Any(); } }
quelle
System.Data.Linq
ist spezifisch für LINQ to SQL.Any()
oderCount()
Methoden in Linq funktionieren nur für generische Typen.Wenn Sie eine einfache
IEnumerable
ohne Typ haben, versuchen Sie zu verwendenIEnumerable<object>
stattdessen.
quelle
IEnumeration
hat keine Methode aufgerufenCount()
. Es ist nur eine Art "Folge von Elementen". VerwendenList
Sie diese Option beispielsweise, wenn Sie die Anzahl der Elemente explizit benötigen. Wenn Sie Linq verwenden, beachten Sie, dass die ErweiterungsmethodeCount()
die Anzahl der Elemente bei jedem Aufruf möglicherweise neu zählt.quelle
Wie wäre es mit:
public bool IsValid { get { return (GetRuleViolations().Cast<RuleViolation>().Count() == 0); } }
quelle