如何在Collection <t>继承类中找到元素索引?</t>

时间:2011-03-03 18:12:09

标签: c# inheritance generic-collections

如何在Collection继承类中找到元素的索引?

public class MyCollection : Collection<MyClass>
{
   // implementation here
}

我尝试在集合上使用.FindIndex但没有成功:

 int index = collectionInstance.FindIndex(someLambdaExpression);

有任何其他方法可以实现这一目标吗?

3 个答案:

答案 0 :(得分:7)

如果您直接拥有该元素,则可以使用IndexOf来检索它。但是,这不适用于通过lambda查找元素索引。

但是你可以使用LINQ:

var index = collectionInstance.Select( (item, index) => new {Item = item, Index = index}).First(i => i.Item == SomeCondition()).Index;

答案 1 :(得分:1)

为什么调用Collection<T>.IndexOf不够?

答案 2 :(得分:1)

如果可能(抱歉,如果不是,并且您受先前选择的限制),并且如果您的用例是能够使用索引,那么最好使用通用列表(即:List)。 / p>

然后你就可以正确使用FindIndex了。

public class MyList : List<MyClass>
{
    // implementation here
}

...

int index = listInstance.FindIndex(x => x.MyProperty == "ThePropertyValueYouWantToMatch");