जब आप एक स्पष्ट श्रेणी चर प्रकार निर्दिष्ट करते हैं , तो संकलक एक कॉल सम्मिलित करता है Cast<T>
। तो यह:
bool result = (from Match m in matches
where m.Groups["name"].Value.Length > 128
select m).Any();
इसके बराबर है:
bool result = matches.Cast<Match>()
.Where(m => m.Groups["name"].Value.Length > 128)
.Any();
जिसे इस प्रकार भी लिखा जा सकता है:
bool result = matches.Cast<Match>()
.Any(m => m.Groups["name"].Value.Length > 128);
इस मामले में Cast
कॉल की आवश्यकता है क्योंकि MatchCollection
केवल लागू होता है ICollection
और IEnumerable
, नहीं IEnumerable<T>
। लगभग सभी LINQ से ऑब्जेक्ट्स के विस्तार के तरीकों को लक्षित किया जाता है IEnumerable<T>
, जिनमें से उल्लेखनीय अपवादों के साथ Cast
और OfType
दोनों का उपयोग "कमजोर" टाइप किए गए संग्रह (जैसे MatchCollection
) को एक जेनेरिक में बदलने के लिए किया जाता है IEnumerable<T>
- जो इसके बाद LINQ संचालन के लिए अनुमति देता है।