2013-03-06 52 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