C#Windowsフォームベースのアプリケーションがあります。そこには複数のコントロール(名前、ID、電話など)を保持するパネル(連絡先用)があります。私たちは、各コントロールのループ(forループ)によって、一致する連絡先コントロールのいずれかを表示するテキスト検索(名前、ID、電話など)を追加しました。コントロールコレクション内のテキストマッチングコントロールを見つける最も速い方法
これはうまくいきますが、連絡先が多い場合(100以上、合計100個のパネル)、時間がかかります。この場合、検索を高速化するための代替アプローチはありますか?
EDIT:
ここでは
Filter(Control Pls, string search)
{
foreach (Control ctrl in Pls.Controls)
{
var Name = ctrl.Controls.Find("name", true);
if ((Name != null) && (Name.Length != 0))
{
Label n = (Label)Name[0];
contactName = n.Text;
}
var Extn = ctrl.Controls.Find("extn", true);
if ((Extn != null) && (Extn.Length != 0))
{
Label e = (Label)Extn[0];
contactExtn = e.Text;
} if (contactName != null && contactExtn != null)
{
if (contactName.Contains(search) || contactExtn.Contains(search))
{
ctrl.Show();
}
else
{
ctrl.Hide();
}
}
else
{
ctrl.Hide();
}
}
}
値が一致すれば、それを壊して検索するために、索引付けの概念を保持する弾性検索方法を使用することができます。 –
私はすべての一致する連絡先を表示しなければならなかったので、私はループから壊れることはできません。 – rajkumaradass
linqを試しましたか? –