Aşağıdaki basit örneği kullanarak, Linq kullanarak SQL'e birden çok tablodan sonuç döndürmenin en iyi yolu nedir?
Diyelim ki iki masam var:
Dogs: Name, Age, BreedId
Breeds: BreedId, BreedName
Ben tüm köpekleri ile geri dönmek istiyorum BreedName
. Tüm köpekleri böyle bir şey kullanarak sorunsuz bir şekilde almalıyım:
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;
}
Ama ırklı köpekler istiyor ve bunu deniyorsam sorun yaşıyorum:
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;
}
Şimdi, derleyicinin köpekleri beklediğinden bir dizi anonim tür döndürmeme izin vermediğini, ancak özel bir tür oluşturmak zorunda kalmadan bunu döndürmenin bir yolu var mı? Yoksa seçim için kendi sınıfımı oluşturmak DogsWithBreedNames
ve bu türü belirtmek zorunda mıyım? Yoksa daha kolay bir yol var mı?
foreach (var cust in query) Console.WriteLine("id = {0}, City = {1}", cust.CustomerID, cust.City);