最も簡単な解決策 (ID の形式が 5 桁に固定されていると仮定します):
var users = File.ReadAllLines("data.txt")
.ToDictionary(line => line.Substring(0, 5));
行を値として、ID をキーとして辞書を作成します。使用法:
string line = users["00125"]; // 00125 JAMES LONDON
それが最も簡単な解決策でした。しかし、実際には、次のようなクラスを紹介します。
public class User
{
public int Id { get; set; }
public string Name { get; set; }
public string Location { get; set; }
public static User Parse(string s)
{
var parts = s.Split(new []{' '}, StringSplitOptions.RemoveEmptyEntries);
return new User {
Id = Int32.Parse(parts[0]),
Name = parts[1],
Location = parts[2]
};
}
public override string ToString()
{
return String.Format("{0:00000} {1} {2}", Id, Name, Location);
}
}
次に、各行を解析し、ユーザーを type の辞書に入れますDictionary<int, User>
。これにより、コードが強く型付けされ、保守が容易になります。
var users = File.ReadAllLines("data.txt")
.Select(line => User.Parse(line))
.ToDictionary(u => u.Id);
var user = users[127];
string name = user.Name; // STARK
Console.WriteLine(user); // 00127 STARK USA