class Object
{
public int ID {get; set;}
public string description {get; set;}
}
如果我有填充了各種對象List<Object> Objects
,我想找到對象,它們的描述是什麼特別的事,我會怎麼做呢?過濾對象列表有特定屬性的
find every Object in Objects whose description == "test"
class Object
{
public int ID {get; set;}
public string description {get; set;}
}
如果我有填充了各種對象List<Object> Objects
,我想找到對象,它們的描述是什麼特別的事,我會怎麼做呢?過濾對象列表有特定屬性的
find every Object in Objects whose description == "test"
你可以使用LINQ:
var results = Objects.Where(o => o.Description == "test");
在一個側面說明,實現Object
是一個類名的很差的選擇,甚至不會編譯原樣...我建議選擇更合適的名稱,並遵循C#的標準大寫約定。
嘗試
foreach(Object obj in Objects)
{
if(obj.description.Contains("test"){
//Object description contains "test"
}
}
像裏德·科普塞回答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;
僅供參考 - 這是沒有更多的「現代」 - 我的版本,這在同一個編譯器版本都成爲可用;) – 2013-03-06 17:13:54
我真的以爲是在C#中的較新版本添加。 – 2013-03-06 17:17:31
Nope - 兩者都在C#3中添加。您使用的集成查詢語法編譯爲相同的東西,但我的版本仍需要擴展方法和lambda表達式 - 所有3個都是C#3的一部分。請參閱:http://msdn.microsoft。 com/en-us/library/bb308966.aspx – 2013-03-06 17:21:42