2012-03-21 16 views
6

Sto provando a filtrare un elenco in modo che risulti in una lista con solo il sobborgo di brisbane?Come filtrare un elenco in C# con espressione lambda?

C#

Temp t1 = new Temp() { propertyaddress = "1 russel street", suburb = "brisbane" }; 
      Temp t2 = new Temp() { propertyaddress = "12 bret street", suburb = "sydney" }; 
      List<Temp> tlist = new List<Temp>(); 
      tlist.Add(t1); 
      tlist.Add(t2); 

      List<Temp> tlistFiltered = new List<Temp>(); 
      //tlistFiltered. how to filter this so the result is just the suburbs from brisbane? 

public class Temp 
    { 
     public string propertyaddress { get; set; } 
     public string suburb { get; set; } 
    } 

risposta

19

Usa Where clausola per filtrare una sequenza

var tlistFiltered = tlist.Where(item => item.suburb == "brisbane") 

espressioni LINQ come dove tornare IEnumerable<T>. Di solito catturo il risultato con var ma potresti usare ToList() per proiettare il risultato in un elenco. Dipende solo da cosa devi fare con la lista più tardi.

List<Temp> tlistFiltered = tlist 
    .Where(item => item.suburb == "brisbane") 
    .ToList() 

Si noti che con il sopra di voi non hanno per allocare un nuovo elenco. I metodi Where e ToList() restituiscono una nuova sequenza che è sufficiente acquisire con il riferimento.