IEnumerable<T>এর একমাত্র ফরওয়ার্ড কার্সারের প্রতিনিধিত্ব করে T। .NET 3.5 এক্সটেনশন পদ্ধতি অন্তর্ভুক্ত যোগ LINQ standard query operatorsমত Whereএবং Firstকোন অপারেটার যে predicates বা গ্রহণ বেনামী ফাংশন প্রয়োজন সঙ্গে Func<T>।
IQueryable<T>একই লিনকিউ স্ট্যান্ডার্ড ক্যোয়ারী অপারেটরগুলি প্রয়োগ করে, তবে Expression<Func<T>>পূর্বাভাস এবং বেনাম ফাংশনগুলির জন্য গ্রহণ করে। Expression<T>একটি সংকলিত অভিব্যক্তি গাছ, পদ্ধতির একটি ভাঙা সংস্করণ ("যদি আপনি চান তবে" অর্ধ-সংকলিত) যা ক্যোয়ারিয়েবল সরবরাহকারী দ্বারা বিশ্লেষণ করতে পারে এবং তদনুসারে ব্যবহার করা যেতে পারে।
উদাহরণ স্বরূপ:
IEnumerable<Person> people = GetEnumerablePeople();
Person person = people.Where(x => x.Age > 18).FirstOrDefault();
IQueryable<Person> people = GetQueryablePeople();
Person person = people.Where(x => x.Age > 18).FirstOrDefault();
প্রথম ব্লকে, x => x.Age > 18একটি বেনামি পদ্ধতি ( Func<Person, bool>), যা অন্য কোনও পদ্ধতির মতো কার্যকর করা যেতে পারে। Enumerable.Whereপ্রতিটি ব্যক্তির জন্য একবার পদ্ধতি চালানো, হবে yieldমান, যার জন্য পদ্ধতি ফিরে ing true।
দ্বিতীয় ব্লকে, x => x.Age > 18একটি অভিব্যক্তি গাছ ( Expression<Func<Person, bool>>), যা "বয়স 'সম্পত্তি> 18" হিসাবে ভাবা যেতে পারে।
এটি LINQ-to-SQL এর মতো জিনিসগুলিকে অস্তিত্ব রাখতে দেয় কারণ তারা অভিব্যক্তি গাছকে বিশ্লেষণ করতে এবং এটিকে সমতুল্য এসকিউএলে রূপান্তর করতে পারে। এবং যেহেতু সরবরাহকারীর IQueryableগণনা না করা অবধি মৃত্যুদণ্ডের প্রয়োজন নেই (এটি প্রয়োগ করে IEnumerable<T>, সর্বোপরি), এটি অন্তর্নিহিত তথ্যগুলির বিরুদ্ধে পুরো ক্যোয়ারীটি কীভাবে কার্যকর করা যায় তার বিষয়ে আরও চৌকস পছন্দগুলি করতে একাধিক ক্যোয়ারী অপারেটরকে (উপরের উদাহরণে Whereএবং FirstOrDefault) একত্রিত করতে পারে উত্স ( SELECT TOP 1এসকিউএল ব্যবহার করার মতো )।
দেখা: