0

LINQ クエリを作成していますが、そのパフォーマンスは DB からのフェッチよりもはるかに遅くなります。パフォーマンスを向上させる方法を教えてください。

cmbMedicines.DataSource = Lookup.Medicines
       .Where(d => d.DosageForm.Equals(cmbType.SelectedValue.ToString()))
       .AsParallel().ToList();

ここで、cmbMedicines は Combobox であり、Lookup.Medicines は医薬品のリストであり、約 100K のレコードがあります。

4

4 に答える 4

0

Combobox のデータ バインディング プロセスもパフォーマンスを低下させると思います。可能であれば、コンボボックスの代わりに他のコントロールを使用してビッグデータを処理する必要があります。

ユーザーはどの薬を選択したいかを知っている必要があると思います。そのため、薬の名前の一部を検索ボックスに入れることができます。これは単なる選択です。ユーザーがリストで検索する単語を入力すると、 AutoCompleteで TextBox (私のサンプル コードではtxtMedicinesという名前) を使用してバインド データを検索できます。

これはサンプルコードです

private void InitializeMedicinesAutoComplete()
{
   var searchMed = Lookup.Medicines
       .Where(d => d.DosageForm.Equals(cmbType.SelectedValue.ToString())).ToList(); 

   var source = new AutoCompleteStringCollection();
   foreach (var med in searchMed)
   {
      // **DisplayMemberText mean any field that you want to display in searching list
      source.Add(med.DisplayMemberText); 
   }
   txtMedicines.AutoCompleteMode = AutoCompleteMode.Suggest;
   txtMedicines.AutoCompleteSource = AutoCompleteSource.CustomSource;
   txtMedicines.AutoCompleteCustomSource = source;
}

private void cmbType_SelectedIndexChanged(object sender, EventArgs e)
{
   InitializeMedicinesAutoComplete();
}

これが役立つことを願っています。

于 2013-11-10T06:05:07.763 に答える