listview - match list view items against array list in c# -


मेरे पास ArrayList है जिसमें कुछ हैशटैबल्स है और मेरे पास है एक ListView जिसमें कुछ आइटम हैं।

मुझे क्या चाहिए सूची सूची से सरणी सूची से मिलान करना है।

यदि सूची में एक आइटम देखने और सरणी सूची में नहीं, तो इसे सूची दृश्य से हटाया जाना चाहिए।

यदि सूची दृश्य या ऐरे सूची में नहीं है, तो उसे सूची दृश्य में जोड़ें।

यह कुछ कोड है:

  ArrayList online_list = उपयोगकर्ताओं; Foreach (online_list में हैशटेबल) {ListViewItem आइटम = नया ListViewItem (); Item.Text = (स्ट्रिंग) i ["u_name"]; Item.Name = (स्ट्रिंग) i ["id"]; Item.ImageIndex = 0; lstvUsers.Items.Add (आइटम); }   

यह कोड चेक के बिना सूची दृश्य में सभी सरणी सूची आइटम जोड़ता है

आप पहले ListView के सभी आइटम कर सकते हैं, फिर ArrayList में सभी जोड़ें:

  lstvUsers.Clear ( ); Foreach (online_list में हैशटेबल) {ListViewItem आइटम = नया ListViewItem (); Item.Text = (स्ट्रिंग) i ["u_name"]; Item.Name = (स्ट्रिंग) i ["id"]; Item.ImageIndex = 0; lstvUsers.Items.Add (आइटम); }   

आपको ListView.Items.Clear के बजाय का उपयोग करना चाहिए

संपादित करें : चूंकि आप निश्चय है कि आप केवल सूची सूची से आइटम निकालना चाहते हैं जो कि ArrayList में नहीं हैं और उन आइटम को जोड़ने के लिए जो सूचीई दृश्य में नहीं हैं, लेकिन ArrayList में हैं

उदाहरण के लिए:

 यह दृष्टिकोण काफी कम कुशल है, क्योंकि आपको सूची आइटम में प्रत्येक आइटम को तुलना करने के बजाय ArrayList (और उपाध्यक्ष) में प्रत्येक आइटम की तुलना करने की आवश्यकता है।  
  var addItems = online_list .Cast & lt; हैशटेबल & gt; ()। जहां (एचटी = & gt;! LstvUsers.Items.ContainsKey ((स्ट्रिंग) ht ["id"])); Var removeItems = lstvUsers.Items .Cast & lt; ListViewItem & gt; ()। जहां (lvi = & gt;! Online_list.Cast & lt; हैशटेबल & gt; ()। कोई भी (एचटी = & gt; (स्ट्रिंग) ht ["id"] == lvi.Name )); फोरछा (हटायेंइयेम में हटाए गए आइटम) {lstvUsers.Items.Remove (removeItem); } Foreach (addItems में var addHashTable) {ListViewItem आइटम = नया ListViewItem (); Item.Text = (स्ट्रिंग) addHashTable ["u_name"]; Item.Name = (स्ट्रिंग) addHashTable ["id"]; lstvUsers.Items.Add (आइटम); }    

Comments