2009-01-06 21 views
29

Aşağıdaki varlıkları linq nesnelerine sahibim. Sorun, bunun için bir şey eklemiş olmama rağmen "Etiketler" ilişkisini yüklemiyor görünmesidir. Etiketlere katılmazsam iyi çalışır, ancak bunu yapmam gerekir.Varlık Çerçevesine Katıl ve Dahil Et

  var items = from i in db.Items.Include("Tags") 
         from t in i.Tags 
         where t.Text == text 
         orderby i.CreatedDate descending 
         select i; 

Bu sorguyu sormanın başka bir yolu var mı? Belki ayırır mısın?

cevap

50

Peki, Dahil Et, bununla çelişir. "Tüm etiketleri yükle" yaz. Nerede, "Bazı etiketler yükle" diyor. Sorgu ile Dahil Et arasında bir çelişki olduğunda, sorgu her zaman kazanacaktır.

den tüm etiketleri döndürmek için en az bir etiketiyle herhangi madde == metin:

 var items = from i in db.Items.Include("Tags") 
        where i.Tags.Any(t => t.Text == text) 
        orderby i.CreatedDate descending 
        select i; 

(Untested, G/modeli DB yok gibi)

İşte a really good, free book on LINQ.

+0

Etiketin nasıl yazılacağına dair herhangi bir öneride, etiketler alıp üzerinde bir koşul var. Normal SQL'de basit olurdu. – Olaj

+0

HERHANGİ BİR öğeden TÜM etiketleri AT LEAST one tag == text ile eklemek ister misiniz? –

İlgili konular