1

我有以下代码:

class exampleClass
{
    int var1;
    int var2;
    string var3
}

List<exampleClass> myList = new List<exampleClass>()

myList.Add(new exampleClass { var1 = 10, var2 = 100, var3 = "a"});
myList.Add(new exampleClass { var1 = 20, var2 = 200, var3 = "b"});
etc.

如果我想在 var1 = 20 的 List 中找到对象的索引 #,我该怎么做(在这种情况下,var1 = 20 在 myList[1] 中)?

我尝试使用 Contain() 但出现错误。

在相关主题上,假设 var1 的每个值都是唯一的,如果我使用以 var1 作为键的字典会不会更快。谢谢。

4

5 回答 5

3
int index = myList.FindIndex(x => x.var1 == 20);
于 2011-11-10T16:53:29.467 回答
2

更快是一个非常相对的术语。它始终取决于集合中的对象数量。不过,这可能会更容易,也更有意义。

使用您的示例:

class exampleClass
{
    int var1;
    int var2;
    string var3
}

List<exampleClass> myList = new List<exampleClass>()

myList.Add(new exampleClass { var1 = 10, var2 = 100, var3 = "a"});
myList.Add(new exampleClass { var1 = 20, var2 = 200, var3 = "b"});

var dict = myList.ToDictionary(k => k.var1);
exampleClass item1 = dict[20];
于 2011-11-10T16:52:44.863 回答
2
var index = myList.FindIndex(val => val.Var1 == 20);
于 2011-11-10T17:03:49.160 回答
1

这是一篇关于这样做的完整文章。它根据您的需要提供了多种解决方案。

于 2011-11-10T16:51:41.963 回答
1

您可以使用该Find方法检索对象(或FindAll检索所有对象):

myList.Find(x => x.var1 == 20);

Or the FindIndex to retrieve its index in the List:

myList.FindIndex(x => x.var1 == 20);
于 2011-11-10T16:53:00.890 回答