2009-04-02 20 views
6

SQL için LINQ öğrenmeye çalışıyorum ve LoadWith işlevini öğrendim. Bulduğum tüm örnekler, LoadWith işlevinde belirttiğiniz tablodan tüm kayıtları yükler. Ben öğrenmek istiyorum neLINQ to SQL istekli yükleme koşullarıyla yükleme

var dlo = new DataLoadOptions(); 
dlo.LoadWith<Blog>(b => b.Posts); 
this.LoadOptions = dlo; 

bu örnekte sadece son blog yazısı yüklemek mümkün olup olmadığını mı?

Ben

dlo.LoadWith<Blog>(b => b.Posts.Max()); 

denedim Ama bu sözdizimi sevmez.

cevap

7

AssociateWith kullanarak yapabilirsiniz. Eğer ayrı sınıfa bilgileriniz yüklenirken edilecektir, Ayrıca

var options = new DataLoadOptions(); 
options.AssociateWith<Blog>(b => 
    b.Posts.Where(
     p1 => p1.SomeColumn == b.Posts.Max(p2 => p2. SomeColumn) 
    )); 

yoksa tıpkı sorgu yapabilirsiniz anonim birini kullanabilirsiniz: Bu çalışacak 2 veritabanı arama yapmak demektir

var query = from b in context.Blogs 
      //probably some where you already have 
      select new MyBlogs // or with no type in case it is anonymous 
      { 
       AColumn = b.AColumn, //map any other values 
       LatestPost = b.Posts.Where(
         p1 => p1.SomeColumn == b.Posts.Max(p2 => p2. SomeColumn) 
       )).ToList() 
      } 
+0

Harika sadece aradığım şey :) Şerefe – Alex

1

Sadece son gönderiyi istiyorsan, o zaman bu yazı için sorgulamanın, bu şekilde 'istekli' bir yükü zorlamaktan ziyade tembel yükleme kullanarak daha verimli olacağından şüpheleniyorum.

+0

. İdeal olarak bunu bir arada yapabilmelisiniz. – Alex