নীচের সাধারণ উদাহরণটি ব্যবহার করে, লিনককে এসকিউএল ব্যবহার করে একাধিক টেবিল থেকে ফলাফল ফেরার সর্বোত্তম উপায় কী?
বলুন আমার কাছে দুটি টেবিল রয়েছে:
Dogs: Name, Age, BreedId
Breeds: BreedId, BreedName
আমি তাদের সাথে সমস্ত কুকুর ফিরিয়ে দিতে চাই BreedName
। আমার সমস্ত কুকুরকে কোনও সমস্যা ছাড়াই এমন কিছু ব্যবহার করা উচিত:
public IQueryable<Dog> GetDogs()
{
var db = new DogDataContext(ConnectString);
var result = from d in db.Dogs
join b in db.Breeds on d.BreedId equals b.BreedId
select d;
return result;
}
তবে আমি যদি প্রজনন সহ কুকুর চাই এবং এটি চেষ্টা করতে পারি তবে আমার সমস্যা আছে:
public IQueryable<Dog> GetDogsWithBreedNames()
{
var db = new DogDataContext(ConnectString);
var result = from d in db.Dogs
join b in db.Breeds on d.BreedId equals b.BreedId
select new
{
Name = d.Name,
BreedName = b.BreedName
};
return result;
}
এখন আমি বুঝতে পেরেছি যে সংকলকটি কুকুরের প্রত্যাশা করার কারণে আমাকে বেনামে টাইপের একটি সেট ফেরত দিতে দেবে না, তবে কাস্টম টাইপ তৈরি না করে এ ফেরানোর কোনও উপায় আছে কি? অথবা আমার নিজের ক্লাসটি তৈরি করতে হবে DogsWithBreedNames
এবং নির্বাচনের ক্ষেত্রে টাইপটি নির্দিষ্ট করতে হবে? বা অন্য কোন সহজ উপায় আছে?
foreach (var cust in query) Console.WriteLine("id = {0}, City = {1}", cust.CustomerID, cust.City);