2012-03-21 123 views
6

我想过滤一个列表,以便它只在布里斯班郊区出现一个列表?如何使用lambda表达式筛选C#中的列表?

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; } 
    } 

回答

19

使用Where子句来筛选序列

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

LINQ表达式等,其中返回IEnumerable<T>。我通常使用var捕获结果,但是您也可以使用ToList()将结果投影到列表中。取决于你以后需要做什么。

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

请注意,与上述你不必分配一个新的列表。 WhereToList()方法都会返回一个新的序列,您只需使用该引用捕获该序列。