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

Se ho un List<Object> Objects popolato con vari oggetti, e voglio trovare oggetti la cui descrizione è qualcosa di particolare, come avrei fatto?Filtrare un elenco di oggetti con un determinato attributo

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

risposta

17

È possibile utilizzare LINQ:

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

Su un lato nota, si rendono conto che Object è una scelta molto scarsa di nomi per una classe, e non sarà nemmeno compilare come-è ... Consiglierei di scegliere nomi più appropriati e seguire le convenzioni standard di maiuscole per C#.

1

provare

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

Come Reed Copsey risposto LINQ. +1.

La mia risposta è ancora con LINQ, ma con il mio modo preferito di scriverlo:

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


Nella dove parametro, si potrebbe mettere in qualsiasi predicato (una funzione che restituisce un bool).

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

Cordiali saluti - questa non c'è più "moderna" - la mia versione e questo sia diventato disponibile nella stessa versione del compilatore;) –

+0

ho davvero pensato che è stato aggiunto in una nuova versione di C#. –

+0

No: entrambi si aggiungevano in C# 3. La sintassi della query integrata si utilizzava compiles per la stessa cosa, ma la mia versione richiede ancora metodi di estensione e lambda - tutti e 3 facevano parte di C# 3. Vedi: http://msdn.microsoft. it/it/us/library/bb308966.aspx –

Problemi correlati