2017-09-06 54 views
8

क्या यह कोड स्निपेट LINQ (भाषा एकीकृत क्वेरी) को कॉल करना सही है?क्या एक विधि श्रृंखला LINQ कहा जा सकता है?

var lstMyStrings = new List<string>(); 
lstMyStrings.Where(aX => string.IsNullOrEmpty(aX)) 
      .Skip(3) 
      .ToList(); 

मैं उलझन में हूँ क्योंकि System.Linq इस कोड के लिए अनिवार्य है।
हालांकि, जब मैं प्रश्न और उत्तर देखता हूं: .NET LINQ query syntax vs method chain , तो वे एक विधि श्रृंखला के बारे में स्पष्ट बात कर रहे हैं और LINQ नहीं।

+2

यह अभी भी LINQ है, बस "क्वेरी वाक्यविन्यास" नहीं है। – Kobi

+0

@ कोबी धन्यवाद! – MaxPower

+4

लिंक केवल विधियों का एक समूह है जो क्वेरी-आधारित भाषा जैसे SQL के समान आइटमों के संग्रह पर काम करता है। दोनों, क्वेरी सिंटैक्स और आपके द्वारा प्रदान की जाने वाली विधि-श्रृंखला वास्तव में उस नामस्थान से linq-विधियां हैं, वे केवल वाक्यविन्यास में भिन्न हैं, व्यवहार में नहीं। – HimBromBeere

उत्तर

11

LINQ दो अलग-अलग तरीकों से लिखा जा सकता है।

var query = from x in source 
      where condition 
      select x.Property 

और अन्य LINQ का विस्तार तरीकों का उपयोग करके है:
एक का उपयोग कर LINQ कथात्मक क्वेरी सिंटैक्स एक प्रश्न लिख कर है

var query = source.Where(condition).Select(x => x.Property); 

दोनों प्रश्नों समान कर रहे हैं और एक ही परिणाम का उत्पादन करेगा (अच्छी तरह से , इस अति-सरलीकृत उदाहरण में संकलक त्रुटि, लेकिन यह विचार है कि गणना करता है :-))

सी # कंपाइलर क्वेरी कॉल में क्वेरी का अनुवाद करता है।
इसका मतलब है कि जो भी आप एक प्रश्न के रूप में लिखते हैं उसे विधि श्रृंखलाओं का उपयोग करके भी लिखा जा सकता है। कृपया ध्यान दें, हालांकि, विपरीत झूठा है - कुछ प्रश्न केवल लिंक के विस्तार विधियों का उपयोग करके लिखे जा सकते हैं।

आगे पढ़ने के लिए, here's what Microsoft have to say about it.

नोट इस के साथ दूसरा पैराग्राफ शुरू होता है:

क्वेरी सिंटैक्स और विधि वाक्य रचना शब्दार्थ समान हैं, लेकिन बहुत से लोगों को क्वेरी सिंटैक्स सरल और पढ़ने के लिए आसान लगता है।

btw, अगर यह पहले से ही स्पष्ट was'nt, कारण यह है कि System.Linq अनिवार्य है के लिए विधि चेनिंग वाक्य रचना इसलिए भी कि LINQ विस्तार तरीकों इस नाम स्थान से संबंधित है।

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