3

クラスのリストを作成しました。ここでコードを見ることができます:

public class People{
        public string name;
        public int age;     
    }   

public List<People> peopleInfo = new List<People>();

私の問題は、たとえば名前があり、年齢を知りたいということです。このデータを取得するにはどうすればよいですか? これにより、特定の位置の名前または年齢を取得できます。

int pos = peopleInfo[0].name;

しかし、どうすれば逆の方法で名前の位置を取得できますか? これがあると年齢が出やすいです。

4

3 に答える 3

4

FindIndex を使用して、名前で人物を検索できます。ただし、この操作が頻繁に行われる場合は、各 FindIndex 呼び出しがリスト全体を 1 レコードずつ検索するため、パフォーマンスの問題が発生する可能性があります。

おそらくこの状況では、名前で人物の辞書を作成する方がよいでしょう。または、人の年齢だけが必要な場合は、名前による年齢の辞書ですら。

また、個人名が一意でない場合も考慮してください。

List<People> peopleInfo = new List<People>() { ... };
Dictionary<string, People> map = peopleInfo.ToDictionary(p => p.name);
People p = map["John"];
于 2013-06-27T18:44:05.477 に答える
1
int index = peopleInfo.FindIndex(p => p.name == "TheName");

または、オブジェクトを直接見つけることもできます...

People person = peopleInfo.FirstOrDefault(p => p.name == "TheName");
于 2013-06-27T18:41:01.087 に答える