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

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

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

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

 int index = collectionInstance.FindIndex(someLambdaExpression);

任何其他方式来实现这一目标?


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

但是,您可以使用LINQ:

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

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


如果可能的话(抱歉,如果不是,并且受限于以前的选择),并且如果您的用例能够使用索引,则最好使用通用列表(即:List)。

那么你将能够正确使用FindIndex。

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

...

int index = listInstance.FindIndex(x => x.MyProperty == "ThePropertyValueYouWantToMatch");
链接地址: http://www.djcxy.com/p/53933.html

上一篇: How do you find an element index in a Collection<T> inherited class?

下一篇: WinForms data binding