Sử dụng ví dụ đơn giản dưới đây, cách tốt nhất để trả về kết quả từ nhiều bảng bằng Linq sang SQL là gì?
Nói rằng tôi có hai bảng:
Dogs: Name, Age, BreedId
Breeds: BreedId, BreedName
Tôi muốn trả lại tất cả những con chó với họ BreedName
. Tôi sẽ nhận được tất cả những con chó sử dụng một cái gì đó như thế này mà không có vấn đề:
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;
}
Nhưng nếu tôi muốn chó có giống và thử điều này, tôi có vấn đề:
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;
}
Bây giờ tôi nhận ra rằng trình biên dịch sẽ không cho phép tôi trả về một tập hợp các loại ẩn danh vì nó mong đợi Chó, nhưng có cách nào để trả lại cái này mà không phải tạo một loại tùy chỉnh không? Hay tôi phải tạo lớp của riêng mình DogsWithBreedNames
và chỉ định kiểu đó trong phần chọn? Hoặc có một cách khác dễ dàng hơn?
foreach (var cust in query) Console.WriteLine("id = {0}, City = {1}", cust.CustomerID, cust.City);