2009-12-01 8 views
5

क्या कोई यहां तत्वों को अलग करने में मदद कर सकता है और मुझे समझने में मदद कर सकता है कि वे क्या हैं?ऑर्डरबीडस्केंडिंग() प्रति एमएसडीएन, पृथ्वी पर इसका क्या अर्थ है?

public static IOrderedEnumerable<TSource> OrderByDescending<TSource, TKey>(
    this IEnumerable<TSource> source, 
    Func<TSource, TKey> keySelector 
) 

टीएसओआरएस और टीकेई क्या है? एक keySelector क्या है? क्या बिल्ली एक IOrderedEumerable है?

Func <> क्या करता है ??

एमएसडीएन इतना गुप्त क्यों है?

+1

क्या आपने पहले से ही एक अविश्वसनीय रूप से समान प्रश्न पोस्ट नहीं किया है? http://stackoverflow.com/questions/1827209/how-did-you-learn-master-c-linq-to-sql – Brandon

+1

नहीं, लेकिन जब मैं उस प्रश्न को लिख रहा था, मैंने इस बात पर विशिष्ट जानकारी प्राप्त करने के लिए यह पूछने का फैसला किया , यह सवाल LINQ से SQL सीखने के बारे में था, यह कोड के इस विशिष्ट ब्लॉक के बारे में है। – BigOmega

+1

मुझे लगता है कि आपको जेनेरिक क्लासेस के साथ-साथ लैम्ब्डा एक्सप्रेशन सीखना चाहिए। एमएसडीएन अब गुप्त नहीं लगेगा। –

उत्तर

11

तोड़ नीचे

  • TSource: प्रकार कुंजी है जिसके द्वारा तत्वों का आदेश दिया जाता है: इस संग्रह में तत्व है जो आदेश दिया जा करने के लिए
  • TKey जरूरत का प्रकार है।
  • Func<TSource,TKey>: प्रतिनिधि जो संग्रह

इस समारोह में दिए गए तत्व के लिए एक महत्वपूर्ण वापस आ जाएगी अनिवार्य रूप से एक छँटाई कार्य है। इस तरह संग्रह में तत्वों की तुलना करने के लिए इसे एक तरीका चाहिए। यह विशेष विधि मानती है कि किसी दिए गए ऑब्जेक्ट के लिए एक समान कुंजी मान होता है जिसके द्वारा उन्हें सॉर्ट किया जा सकता है। निम्नलिखित वर्ग छात्र

class Student { 
    string Name { get; set; } 
    ... 
} 

उदाहरण के लिए

लें अगर मैं उनके नाम से Student उदाहरणों का एक संग्रह को सॉर्ट करने मैं निम्नलिखित

IEnumerable<Student> col = GetTheStudents(); 
var ordered = col.OrderByDescending(x => x.Name); 

इस मामले मूल्यों होगा में कर सकता है चाहता था निम्नानुसार

  • टीएसओआर: Student
  • TKey: String
  • Func<TSource,TKey>: यह लैम्ब्डा अभिव्यक्ति x => x.Name
+0

ग्रेट प्रतिक्रिया, एक और बात: मुझे समझ में परेशानी हो रही है कि आपको एक्स कहां मिलती है, या एक्स को वहां घोषित किया जा रहा है? 'हमारे से अधिक के बराबर' क्यों? – BigOmega

+0

इसी प्रकार यदि आप केवल '=' डालते हैं या यदि आप '= <' (बराबर या उससे कम) डालते हैं तो क्या होगा? – BigOmega

+2

@Ryan, x को लैम्ब्डा अभिव्यक्ति के हिस्से के रूप में घोषित किया गया है। एक और विस्तारित फॉर्म निम्न है: प्रतिनिधि (स्ट्रिंग x) {वापसी x.Name;} – JaredPar

3

मैं सिर्फ आश्चर्य है, क्या MSDN पर बिल्कुल स्पष्ट नहीं है में पारित हो जाता है? http://msdn.microsoft.com/en-us/library/bb548916.aspx

और यहाँ उस विषय से अपने प्रश्नों के कुछ जवाब हैं: - स्रोत के तत्वों के प्रकार

प्रकार पैरामीटर

TSource यहाँ विषय है।

टीके - कुंजी चयनकर्ता द्वारा लौटाई गई कुंजी का प्रकार।

पैरामीटर

स्रोत - ऑर्डर करने के लिए मूल्यों का एक अनुक्रम।

कुंजी चयनकर्ता - किसी तत्व से कुंजी निकालने के लिए एक फ़ंक्शन।

तुलनाकर्ता - कुंजी की तुलना करने के लिए एक आईसीओएमपीयर।

वापसी मूल्य

एक IOrderedEnumerable जिसका तत्वों को एक कुंजी से घटते क्रम में क्रमबद्ध कर रहे हैं।

इसके अलावा, टिप्पणियां और एक उदाहरण हैं। आपने यहां जो पोस्ट किया है वह विधि का सिर्फ एक हस्ताक्षर है।

+0

ठीक है आप सही हैं, मैं बस निराश था, मुझे लगता है कि यह एमएसडीएन नहीं है जो मेरे लिए गुप्त है यह LINQ है :) – BigOmega

+1

मैं ' डी कहते हैं कि यह सिर्फ LINQ नहीं है। सी # 1.0 से 3.0 में बहुत बदल गया है। शायद, आपके लिए सी # 3.0 के बारे में अच्छी किताब प्राप्त करना और जेनेरिक, विस्तार विधियों, लैम्ब्डा अभिव्यक्तियों, प्रतिनिधियों, और हाँ, LINQ के बारे में पढ़ने के लिए अच्छा होगा। अभी यह सीम है कि आप बस नए सी # वाक्यविन्यास नहीं पढ़ सकते हैं। –

संबंधित मुद्दे