ল্যাঙ্গুয়েজ ইন্টিগ্রেটেড কোয়েরি বা লিংক (LINQ)
লিংক বা LINQ কী? (What Is LINQ?)
LINQ এর পূর্ণরূপ হলো Language Integrated Query (ল্যাঙ্গুয়েজ ইন্টিগ্রেটেড কোয়েরি)। এর মাধ্যমে আপনি সি শার্পের (C#) যেকোনো কালেকশনকে (collection) খুব সুন্দর এবং সহজে পড়া যায় এমন সিনট্যাক্সে (syntax) খুঁজতে (search), ফিল্টার (filter) করতে, সাজাতে (sort) এবং রূপান্তর (transform) করতে পারবেন — যা দেখতে অনেকটা এসকিউএল বা SQL ডেটাবেস কোয়েরির (database queries) মতোই।
ধরা যাক, আপনার কাছে ১,০০০ জন ছাত্র-ছাত্রীর একটি তালিকা (list) রয়েছে। LINQ ছাড়া এই তালিকাটি যাচাই বাছাই করার জন্য আপনাকে অনেকগুলো লুপ (loops), if-স্টেটমেন্টস (if-statements) এবং অস্থায়ী ভেরিয়েবল (temporary variables) লিখতে হতো। কিন্তু LINQ ব্যবহার করে আপনি শুধু এক লাইনেই লিখতে পারবেন, "১৮ বছরের বেশি বয়সী সব ছাত্র-ছাত্রীর নাম তাদের জিপিএ (GPA) অনুযায়ী সাজিয়ে আমাকে দাও।" কাজ শেষ।
LINQ ব্যবহারের দুটি পদ্ধতি রয়েছে:
- মেথড সিনট্যাক্স (Method syntax):
list.Where(...).Select(...)— এটি সবচেয়ে বেশি ব্যবহৃত হয় এবং এতে ল্যামবডা অ্যারো (lambda arrows) ব্যবহৃত হয়। - কোয়েরি সিনট্যাক্স (Query syntax):
from x in list where ... select ...— এটি দেখতে অনেকটা SQL এর মতো।
উভয় পদ্ধতিতেই একই ধরনের ফলাফল পাওয়া যায়। বেশিরভাগ সি শার্প ডেভেলপার মেথড সিনট্যাক্স ব্যবহার করতে বেশি পছন্দ করেন, তবে বড় বা জটিল জয়নগুলোর (complex joins) জন্য কোয়েরি সিনট্যাক্স বেশ ভালো কাজ করে।
LINQ-এর বেসিক ধারণা — Where, Select, OrderBy (LINQ Basics — Where, Select, OrderBy)
শক্তিশালী কিছু LINQ মেথডস (Powerful LINQ Methods)
LINQ-এ ডজনখানেক মেথড (methods) রয়েছে। নিচে এমন কিছু মেথডের কথা বলা হলো যেগুলো আপনার সব সময়ই কাজে লাগবে:
.Where()— কোনো শর্ত বা কন্ডিশন (condition) পূরণ করে এমন আইটেমগুলোকে ফিল্টার করে.Select()— প্রতিটা আইটেমকে নিয়ে অন্য কিছুতে রূপান্তর করে.OrderBy()/.OrderByDescending()— ক্রমানুসারে সাজায়.GroupBy()— একটি কি (key) বা চাবির ওপর ভিত্তি করে আইটেমগুলোকে গ্রুপ (group) বা দলবদ্ধ করে.First()/.FirstOrDefault()— শর্ত পূরণ করে এমন প্রথম আইটেমটিকে খুঁজে বের করে.Any()— শর্তের সাথে বা বর্ণনার সাথে মেলে এমন অন্তত একটি (AT LEAST ONE) আইটেম কি আছে? (এটি bool রিটার্ন করে).All()— সব আইটেমই কি (ALL items) শর্ত পূরণ করে? (এটি bool রিটার্ন করে).Count()— কতগুলো আইটেম শর্ত পূরণ করতে পেরেছে?.Sum()/.Average()/.Min()/.Max()— কালেকশনের (collections) ওপর গাণিতিক হিসাব-নিকাশ করে.Distinct()— পুনরাবৃত্তি বা ডুপ্লিকেট (duplicates) সরিয়ে দেয়.Take(n)/.Skip(n)— পেজিনেশন (pagination) তৈরি করে