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