如何在Collection继承类中找到元素的索引?
public class MyCollection : Collection<MyClass>
{
// implementation here
}
我尝试在集合上使用.FindIndex但没有成功:
int index = collectionInstance.FindIndex(someLambdaExpression);
有任何其他方法可以实现这一目标吗?
答案 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");