भविष्यवाणी के साथ मुझे यह स्पष्ट करने की आवश्यकता है कि दिए गए संग्रह में एक तत्व है।आईनेमेरेबल <T>।
मैं collection.Count(foo => foo.Bar == "Bar") > 0)
के माध्यम से ऐसा कर सकता हूं लेकिन यह अनावश्यक नौकरी करेगा - पूरे संग्रह को फिर से चालू करें जबकि मुझे पहली घटना को रोकने की आवश्यकता है।
लेकिन मैं भविष्यवाणी के साथ Contains()
का उपयोग करने का प्रयास करना चाहता हूं, उदा। foo => foo.Bar == "Bar"
।
वर्तमान में IEnumerable<T>.Contains
दो हस्ताक्षर है:
IEnumerable<T>.Contains(T)
IEnumerable<T>.Contains(T, IEqualityComparer<T>)
तो मैं जाँच करने के लिए कुछ चर निर्दिष्ट करने के लिए है:
var collection = new List<Foo>() { foo, bar };
collection.Contains(foo);
या अपने कस्टम IEqualityComparer<Foo>
जो मेरे संग्रह के खिलाफ इस्तेमाल किया जाएगा लिखें:
class FooComparer : IEqualityComparer<Foo>
{
public bool Equals(Foo f1, Foo f2)
{
return (f1.Bar == f2.Bar); // my predicate
}
public int GetHashCode(Foo f)
{
return f.GetHashCode();
}
}
तो वहाँ किसी भी अन्य तरीकों विधेय उपयोग करने के लिए कर रहे हैं?