SORU
10 ŞUBAT 2009, Salı


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
10 ŞUBAT 2009, Salı


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.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • cyriak

    cyriak

    29 Mart 2006
  • Distractify

    Distractify

    1 Aralık 2011
  • hockeywebcasts

    hockeywebcas

    31 EKİM 2012