2013-03-06 16 views
6
class Object 
{ 
    public int ID {get; set;} 
    public string description {get; set;} 
} 

Wenn ich ein List<Object> Objects bevölkert mit verschiedenen Objekten haben, und ich möchte, um Objekte zu finden, deren Beschreibung ist etwas Besonderes, wie würde ich das tun?Filtern einer Liste von Objekten mit einem bestimmten Attribut

find every Object in Objects whose description == "test" 

Antwort

17

können Sie LINQ verwenden:

var results = Objects.Where(o => o.Description == "test"); 

Auf einer Seite zur Kenntnis, erkennen, dass Object eine sehr schlechte Wahl für eine Klasse von Namen ist, und wird nicht einmal kompilieren, wie sie ist ... Ich würde empfehlen, passendere Namen zu wählen und die Standard-Großschreibung für C# zu beachten.

1

versuchen

foreach(Object obj in Objects) 
{ 
    if(obj.description.Contains("test"){ 
     //Object description contains "test" 
    } 
} 
2

Wie Reed Copsey LINQ beantwortet. +1.

Meine Antwort ist immer noch mit LINQ, aber mit meiner bevorzugten Art und Weise des Schreibens:

var results = from myobject in myobjects 
       where myobject.description == "test" 
       select myobject; 


In der where-Parameter, die Sie in jedem Prädikat (eine Funktion, die einen bool) setzen könnten.

var results = from myobject in myobjects 
       where MyPredicate(myobject) 
       select myobject; 
+0

Gerade FYI - das ist nicht mehr „modern“ - meine Version und diese beide in der gleichen Compiler Version verfügbar wurden;) –

+0

ich wirklich dachte, dass es in einer neueren Version von C# hinzugefügt wurde. –

+0

Nein - Beide fügen in C# 3 hinzu. Die integrierte Abfragesyntax, die Sie verwendet haben, kompiliert die gleiche Sache, aber meine Version erfordert noch Erweiterungsmethoden und Lambdas - alle 3 waren Teil von C# 3. Siehe: http://msdn.microsoft. com/de-us/library/bb308966.aspx –

Verwandte Themen