না হয় ভাল: তারা বিভিন্ন প্রয়োজন পরিবেশন। আপনি একাধিক পরিসরের ভেরিয়েবলগুলি লাভ করতে চাইলে ক্যারিয়ার সিনট্যাক্সটি তার নিজের মধ্যে আসে । এটি তিনটি পরিস্থিতিতে ঘটে:
- লেট কীওয়ার্ডটি ব্যবহার করার সময়
- যখন আপনার একাধিক জেনারেটর রয়েছে ( ক্লজগুলি থেকে )
- যখন যোগ দেয়
এখানে লাইনকপ্যাডের নমুনাগুলির একটি উদাহরণ রয়েছে:
string[] fullNames = { "Anne Williams", "John Fred Smith", "Sue Green" };
var query =
from fullName in fullNames
from name in fullName.Split()
orderby fullName, name
select name + " came from " + fullName;
এখন পদ্ধতি সিনট্যাক্সে এটি একই জিনিসটির সাথে তুলনা করুন:
var query = fullNames
.SelectMany (fName => fName.Split().Select (name => new { name, fName } ))
.OrderBy (x => x.fName)
.ThenBy (x => x.name)
.Select (x => x.name + " came from " + x.fName);
অন্যদিকে, মেথড সিনট্যাক্স, ক্যোয়ারী অপারেটরগুলির সম্পূর্ণ স্বর উন্মোচন করে এবং সাধারণ প্রশ্নের সাথে আরও সংক্ষিপ্ত। কোয়েরি এবং পদ্ধতি সিনট্যাক্সের মিশ্রণের মাধ্যমে আপনি উভয় বিশ্বের সেরাটি পেতে পারেন। এটি প্রায়শই লিনকিউ থেকে এসকিউএল কোয়েরিতে করা হয়:
var query =
from c in db.Customers
let totalSpend = c.Purchases.Sum (p => p.Price) // Method syntax here
where totalSpend > 1000
from p in c.Purchases
select new { p.Description, totalSpend, c.Address.State };