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 のオブジェクトのインデックス # を見つけたい場合、どうすればよいでしょうか (この場合、var1 = 20 は myList[1] にあります)。

Contain() を使用してみましたが、エラーが発生しました。

関連するテーマでは、var1 の各値が一意であると仮定すると、代わりに var1 をキーとして Dictionary を使用すると、単純に高速になります。ありがとう。

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);

または、FindIndexでそのインデックスを取得しますList

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