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

如果我有填充了各種對象List<Object> Objects,我想找到對象,它們的描述是什麼特別的事,我會怎麼做呢?過濾對象列表有特定屬性的

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

回答

17

你可以使用LINQ:

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

在一個側面說明,實現Object是一個類名的很差的選擇,甚至不會編譯原樣...我建議選擇更合適的名稱,並遵循C#的標準大寫約定。

1

嘗試

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

像裏德·科普塞回答LINQ。 +1。

我的回答是仍與LINQ,但我寫它的首選方式:

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


在那裏參數,你可以把任何謂詞(函數返回一個布爾值)。

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

僅供參考 - 這是沒有更多的「現代」 - 我的版本,這在同一個編譯器版本都成爲可用;) – 2013-03-06 17:13:54

+0

我真的以爲是在C#中的較新版本添加。 – 2013-03-06 17:17:31

+0

Nope - 兩者都在C#3中添加。您使用的集成查詢語法編譯爲相同的東西,但我的版本仍需要擴展方法和lambda表達式 - 所有3個都是C#3的一部分。請參閱:http://msdn.microsoft。 com/en-us/library/bb308966.aspx – 2013-03-06 17:21:42