การใช้ตัวอย่างง่าย ๆ ด้านล่างวิธีที่ดีที่สุดในการส่งคืนผลลัพธ์จากหลายตารางโดยใช้ Linq เป็น SQL คืออะไร
พูดว่าฉันมีสองตาราง:
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;
}
ตอนนี้ฉันรู้แล้วว่าคอมไพเลอร์จะไม่ให้ฉันส่งคืนชุดแบบไม่ระบุชื่อเนื่องจากคาดว่า Dogs แต่จะมีวิธีคืนค่านี้โดยไม่ต้องสร้างประเภทที่กำหนดเองหรือไม่ หรือฉันต้องสร้างคลาสของตัวเองDogsWithBreedNames
และระบุประเภทนั้นในตัวเลือก? หรือมีวิธีอื่นที่ง่ายกว่านี้ไหม?
foreach (var cust in query) Console.WriteLine("id = {0}, City = {1}", cust.CustomerID, cust.City);