Anonim tür sonuçlar döndürür?
Aşağıda basit bir örnek kullanarak birden çok tablo için SQL Etmeniz kullanarak sonuçları döndürmek için en iyi yolu nedir?
Demek iki tablo var:
Dogs: Name, Age, BreedId
Breeds: BreedId, BreedName
Onların tüm köpekler BreedName
iade etmek istiyorum. Tüm köpekler herhangi bir sorun ile bu gibi bir şey kullanarak almak zorundayı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 eğer istersem ırkları ve Köpekler ile ilgili sorunlar var, bu deneyin:
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 derleyici Köpekler bekliyor olduğu için bana anonim türleri kümesi döndürür izin vermiyor, ama orada özel bir tür oluşturmak zorunda kalmadan bu dönmek için bir yol olduğunu fark ettim? Veya DogsWithBreedNames
benim de bir sınıf oluşturun ve seçin türünü belirtmek zorunda mıyım? Yoksa başka bir kolay yolu var mı?
CEVAP
Bu modeli öneririm:
public class DogWithBreed
{
public Dog Dog { get; set; }
public string BreedName { get; set; }
}
public IQueryable<DogWithBreed> 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 DogWithBreed()
{
Dog = d,
BreedName = b.BreedName
};
return result;
}
Fazladan bir sınıf var demektir, ama kod için kolay, kolayca genişletilebilir, yeniden kullanılabilir ve tip-güvenli bir yerde.
Lınq to SQL - top n satır Döndürür...
Java ile farklı sonuçlar's digest...
Nasıl parametreleri gibi anonim türler...
SQL Server ekledikten sonra değerini D...
Catch blok döndürür?...