अब मैं अपने सभी डेटा को कैश (ऑब्जेक्ट्स) में एक सूची के रूप में प्राप्त करने के लिए एक मंच आया हूं और मेरी अगली चीज़ मुझे सूची से कुछ उदाहरणों को निकालना है।LINQ या Lambda का उपयोग करके किसी सूची से उदाहरण निकालें?
आम तौर पर, मैं इस तरह हटाने के करते हैं:
List<T> list;
List<T2> toBeRemovedItems;
// populate two lists
foreach(T2 item in toBeRemovedItems)
{
list.Remove(delegate(T one) {
// build a condition based on item
// return true or false
});
}
अधिक विशिष्ट होना करने के लिए, मैं वास्तव में तैयार करते हैं या गतिशील वर्ग (नहीं एक औपचारिक परिभाषित वर्ग) के toBeRemvoedItems सूची को पॉप्युलेट। उदाहरण के लिए, टी वर्ग MyClass और दूर करने के लिए कोड की तरह कुछ है:
class MyClass<C> {
public string Value1 { get; set; }
public int Value2 { get; set; }
public C ObjectC { get; set; }
}
....
List<MyClass<C>> list;
// populate list
// populate toBeRemovedItems. Here is an example of hard-coded codes:
var toBeRemovedLItems = new[] {
new { Value1="a", Value2 = 1},
new { Value2="x", Value2 = 10},
...
};
// toBeRemovedItems may be the result of Select from a collection
foreach(var item in toBeRemovedLItems)
{
list.Remove(delegate(MyClass one) {
return one.Value1 = item.Value1 && one.Value2 < item.Value2;
});
}
मैं MSDN से IEnumerable
इंटरफ़ेस में Remove()
विधि के लिए खोज करने की कोशिश की, लेकिन मैं वहाँ Remove()
की विधि नहीं मिल सकता है (यह समझ में आता है कि IEnumerable
सिर्फ गणना के लिए प्रयोग किया जाता है)। सूची वर्ग में, Remove(...)
विधियों को कई अधिभारित किया गया है। मुझे यकीन नहीं है कि क्या LINQ या Lambda अभिव्यक्तियों का उपयोग कर सूची से आइटम्स को निकालने का कोई वैकल्पिक तरीका है?
वैसे, मैंने एक सूची के खिलाफ एक क्वेरी करने के लिए एक प्रश्न के बारे में सोचा था या एक नई IEnumerable
सूची जहां एक सूची से चलती वस्तुओं के समान स्थितियां हैं। हालांकि, मैं अपनी कैश की गई सूची से वस्तुओं को हटाना पसंद करता हूं, और कुछ मामलों में मैं कक्षा में सूची संपत्ति को किसी नई सूची (उदाहरण के लिए निजी सेट) में रीसेट नहीं कर सकता।
MyClass one; //initialize MyClass
list.RemoveAll(item => one.Value1 == item.Value1 && one.Value2 < item.Value2);
डुप्ली की तरह दिखता है। खैर, मूल रूप से आपने पोस्ट में सभी संभावित तरीकों का उल्लेख किया है ... http://stackoverflow.com/questions/1120336/what-is-the-easiest-way-to-foreach-through-a-listt-removing-unwanted -objects –