2012-02-25 4 views
1

以下のような検索条件を実装したいと思っています。最適化された方法で最適化したいのですが、どうしたらいいですか?この検索条件はどのように達成できますか?

switch (e.CommandName) 
{ 
    case "DRESS": 
     chkItem.Items.Clear(); 
     chkItem.DataSource = cDressing.GetAllDressingDetail(cWebUtil.CurrClientID); 
     chkItem.DataTextField = "Description"; 
     chkItem.DataValueField = "DressingID"; 
     chkItem.DataBind(); 
     CurrBtnMode = btnMode.Dressing; 
     // ModalPopupExtender1.TargetControlID = ((Button)grdOrder.Rows[currItem.OrderItemID -1].FindControl("btnDress")).ID.ToString(); 

     if (currItem.DressingItems.Count > 0) 
     { 
     foreach(cOrderItemDressing itemDress in currItem.DressingItems) 
     { 
      // I want here to apply condtion for those chkItem object's DressingID exist in the itemDress objets's DressingID should 
      // have checked state in checkbox list to be populated. 
     } 
     } 

     ModalPopupExtender1.Show(); 
+0

私はこのためにいくつかのラムダ式を使用することができます.. – NoviceToDotNet

+0

実際には私はそれを作ることができません。 – NoviceToDotNet

答えて

1

currItem.DressingItemsコレクションに一致する項目を持っているchkItem.Items内の項目をチェックするためにあなたの目標ですか?これはあなたが取得したいものですかどうかはわからないんだけど、あなたはこれを試すことができます。

... 
//uncheck all the items first (if you need it) 
foreach (var item in chkItem.Items) 
{ 
    item.Checked = false; 
} 

foreach(cOrderItemDressing itemDress in currItem.DressingItems) 
{ 

    bool chkItemFound = false; 
    foreach (var item in chkItem.Items) 
    { 
     //if the item is found, make it checked 
     if (item.DressingID == itemDress.DressingID) 
     { 
      item.Checked = true; 
      chkItemFound = true; 
      break; 
     } 
    } 
} 

私はまだこれをテストしていないので、それを使用しているときにいくつかの問題を持っている場合は、ちょうど私を聞かせて知っている。

更新

あなたはそれが問題を解決する最も最適化された方法ですかどうかを尋ねられました。もっと最適化されたメソッドがあると言えますが、コードを単純にしてソリューションを表示するだけでいいと思っていました。 それでもかまいませんが、それぞれのコレクションに含まれるアイテムの数によって異なります。

私はそれを最適化する非常に簡単な方法は、既に見つかったアイテムを削除することで、非常に多くのアイテムの比較を防ぐことになると思います。このようにして、ループの繰り返しごとにコレクションを縮小し、より速く動作させることができます。ただし、元のフォームにアクセスするために変更するコレクションのコピーを作成する必要があります(この配列の割り当てには時間がかかることに注意してください)。 ソートされたコレクションを使用して、ある種の検索アルゴリズムを実装する方法もあります。これにより、検索処理自体が高速になりますが、コレクションをソートするにはもう少し時間がかかります(ソートはソートされたフォームでコレクションを作成することで実装できるため、後でソートする必要はありません)。

おそらく他の方法もありますが、アプリケーションの他の部分の詳細や使用するデータの量によって異なる場合があります。

+0

それは動作しますが、それを実行するのに最も最適化された方法ですか? – NoviceToDotNet

+1

可能性のある最適化についての情報で答えを更新しました。 –

関連する問題