0

特定の値を見つけて返したい文字列のリストがあります。検索したいだけなら、リストの代わりにハッシュセットを使用できます

 HashSet<string> data = new HashSet<string>();    
 bool contains = data.Contains("lokendra"); // 

しかし、リストFindからも値を返したいので、私は使用しています。この方法は時間がかかることがわかりました。このコードが存在する方法はhit more than 1000 times、リストのサイズは appx です20000 to 25000。この方法には時間がかかります。検索を高速化する方法は他にありますか。

List<Employee> employeeData= new List<Employee>();
var  result = employeeData.Find(element=>element.name=="lokendra")

検索からのデータの取得を高速化するlinqまたはその他のアプローチはありますか。助けてください。

 public struct Employee
    {
        public string role;
        public string id;
        public int salary;
        public string name;  
        public string address;          
    }

この構造のリストがあり、name プロパティが値「lokendra」と一致する場合は、オブジェクト全体を再実行します。リストを従業員データと見なします。

検索を高速化するためにハッシュセットを使用する方法を知りたいのですが、検索以外にデータを検索して高速に返すことができます。

4

2 に答える 2

3

あなたが実際に欲しいのはDictionary<string, Employee>. 一度ビルドすれば、何度でも効率的にクエリを実行できます。従業員のリストから簡単に作成できます。

var employeesByName = employees.ToDictionary(e => e.Name);
...

var employee;
if (employeesByName.TryGetValue(name, out employee))
{
    // Yay, found the employee
}
else
{
    // Nope, no employee with that name
}

編集:あなたの編集を見ました...このようなタイプを作成しないでください。structほとんどの場合、class代わりに、パブリック フィールドではなくプロパティが必要です...

于 2013-04-04T11:58:37.250 に答える