ArrayList C#包含方法查询

ArrayList C#包含方法查询,c#,observablecollection,C#,Observablecollection,我有一个可观察的收集列表。它包含10个类型为MyClass的对象 class MyClass { string name; int age; } 如果我想查找列表中age=10的所有项目,我可以使用Contains方法吗? 如果是,我如何在不使用迭代的情况下做到这一点 var age10 = list.Where(i => i.age == 10); 这里还有很多查询:否,包含的内容只查找特定的值,而不是匹配谓词的内容。它也只找到一个值,而不是每个匹配的值 但是,如果您使用的是

我有一个
可观察的收集
列表。它包含10个类型为
MyClass
的对象

class MyClass
{
  string name;
  int age;
}
如果我想查找列表中
age=10
的所有项目,我可以使用
Contains
方法吗? 如果是,我如何在不使用迭代的情况下做到这一点

var age10 = list.Where(i => i.age == 10);

这里还有很多查询:

否,
包含的内容
只查找特定的值,而不是匹配谓词的内容。它也只找到一个值,而不是每个匹配的值

但是,如果您使用的是.NET 3.5或更高版本,则可以使用从LINQ到对象:

foreach (var item in list.Where(x => x.Age == 10))
{
    // Do something with item
}

由于
observateCollection
实现了
Collection
,它实现了
IEnumerable
。因此,您可以使用LINQ到对象扩展方法来简化此过程(即使它将在后台使用迭代):


可以使用linq执行此操作,但不能使用
Contains

 var foo = from bar in myCollection where bar.age == 10 select bar;

正如其他人所说,使用
。其中(i=>i.Age==10)
将是获得问题中所述结果的正确方法。您可以使用
.Contains()
检查您的集合中是否有类的特定实例。

您的问题涉及ObservableCollection,但您的标题涉及ArrayList。请编辑以保持一致。请注意,虽然这是一个很好的解决方案,但在幕后它使用迭代。这对于10个对象来说是没有问题的,但是如果在较大的集合上过度使用,那么速度可能会很慢,所以要注意这一点。实际上,在迭代的时间开销比处理循环中每个值的时间开销更大的情况下,迭代器速度会很慢,并且集合很大(多达数百个)。如果是这样的话,您可能需要重新考虑开始时对数据结构的选择:一个已排序的本机数组、一棵树或一个列表字典会更好,因为它们分别是O(logn)、O(logn)和O(1)用于搜索,而不是使用未排序的ObservaleCollection得到的O(N)。
 var foo = from bar in myCollection where bar.age == 10 select bar;