C# LINQ

Introduction to C# LINQ (Language Integrated Query)

LINQ एक Language Integrated Query mechanism है जिसे .NET framework के version 3.5 में introduce किया गया था।

LINQ के द्वारा आप programming language syntax use करते हुए different data sources जैसे की कोई भी collection of objects, SQL server databases, XML Documents और ADO .NET datasets आदि से data के लिए query कर सकते है।

जैसा की आपको पता data अलग अलग sources में पाया जाता है जैसे की databases, XML documents और web services आदि। इस data से interact करने के लिए आपको इन platform से सम्बंधित technology सीखनी पड़ती है।

उदाहरण के लिए यदि आप SQL server database से data access करना चाहते है तो इसके लिए आपको SQL (Structured Query Language) सीखने की आवश्यकता होगी। इसी प्रकार अलग अलग platforms के data से interact करने के लिए programmer को अलग अलग technologies को सीखने की आवश्यकता होती है।

लेकिन C# आपको LINQ (Language Integrated Query) mechanism provide करती है जिसे use करने के लिए आपको किसी प्रकार की नयी technology को सिखने की आवश्यकता नहीं होती है।

क्योंकि LINQ language integrated है यानी की LINQ mechanism C# language keywords के द्वारा कार्य करता है जो programmer द्वारा पहले से ही सीखे जा चुके होते है। LINQ mechanism programming language और different data source platforms के बीच एक bridge का कार्य करता है।

यदि आसान शब्दों में कहा जाए तो LINQ SQL की ही तरह एक query mechanism है लेकिन LINQ different data sources के साथ कार्य कर सकता है और इसके लिए आपको कोई नयी language या technology सिखने की आवश्यकता नहीं होती है। क्योंकि LINQ normal C# keywords और कुछ query operators द्वारा बनी हुई queries से operate करता है।

LINQ को implement करने के लिए C# System.Linq namespace provide करती है। इस namespace में provide की गयी classes और methods द्वारा आप LINQ को अपने program में implement कर सकते है।

एक बात आपको हमेशा ध्यान रखनी चाहिए की LINQ mechanism हमेशा objects के साथ कार्य करता है। कोई भी group of objects जो memory में है जैसे की arrays और different collections आदि उनके साथ आप LINQ को प्रयोग कर सकते है।

ऐसी classes जो IEnumerable और IQueryable interface को implement करती है उनके साथ ही LINQ mechanism कार्य कर सकता है।

Working of LINQ

जब एक LINQ query execute होती है तो वह data source को भेजी जाती है। Data source उस query को अपने according convert करता है। Convert करने के बाद वह query execute की जाती है।

इसके बाद उस query के result को एक object का रूप दिया जाता है। इसके बाद यह object उस code को return किया जाता है जिसके द्वारा query execute की गयी थी।

उदाहरण के लिए जब आप एक LINQ to SQL query execute करते है तो LINQ query SQL server को भेजी जाती है। SQL server LINQ query को SQL में convert करके execute करता है। इसके बाद SQL server query के result को object के रूप में return करता है।

यह process in memory objects पर apply नहीं होती है।

Advantages of LINQ

निचे LINQ (Language Integrated Query) mechanism की कुछ advantages बतायी जा रही है।

  1. Programmers को अलग अलग data sources के लिए अलग से किसी प्रकार की query language या technology को सिखने की आवश्यकता नहीं होती है।
  2. LINQ के प्रयोग से आप बहुत ही कम code द्वारा data sources पर complex data operations perform कर सकते है।
  3. जब आप LINQ का प्रयोग करते है तो एक common syntax द्वारा अलग अलग data sources के साथ interact कर पाते है।
  4. LINQ के प्रयोग से आप एक single query द्वारा multiple data sources से data retrieve कर सकते है।
  5. LINQ mechanism IntelliSense support provide करता है जिससे queries लिखना और भी आसान और fast हो जाता है।
  6. जब आप LINQ को use करते है तो errors compile time पर ही detect हो जाती है।
  7. LINQ mechanism debugging के लिए भी support provide करता है।

Categories of LINQ Queries

LINQ को 4 categories में divide किया गया है। ये categories अलग अलग data sources के साथ perform की गयी queries के अनुसार create की गयी है।

  1. LINQ to Objects – जब in memory objects जैसे की array और collections आदि के लिए LINQ query perform की जाती है तो वह LINQ to Objects category में आती है। LINQ to Objects category की queries perform करने के लिए System.Linq namespace को use किया जाता है।
  2. LINQ to XML – जब XML data sources के लिए LINQ query perform की जाती है तो वह LINQ to XML category में आती है। LINQ to XML category की queries perform करने के लिए System.Xml.Linq namespace को use किया जाता है।
  3. LINQ to SQL – जब SQL databases के लिए LINQ query perform की जाती है तो वह query LINQ to SQL category में आती है। LINQ to SQL category की queries perform करने के लिए System.Data.Linq namespace को use किया जाता है।
  4. LINQ to DataSet – ADO .NET Data sets के लिए perform की गयी Queries LINQ to DataSet category में आती है। इस category की queries perform करने के लिए System.Data.Linq namespace use किया जाता है।

LINQ queries perform करने के लिए कुछ special query operators का प्रयोग किया जाता है। इन operators को IEnumerable और IQueryable classes में define किया गया है।