2009-04-02 3 views
6

LINQ to SQL을 배우려고하고 있는데 LoadWith 함수에 대해 알아 냈습니다. 내가 찾은 모든 예제는 LoadWith 함수에서 지정한 테이블의 모든 레코드를로드합니다.LINQ to SQL 열거 형 조건로드

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

이 예제에서는 마지막 블로그 게시물 만로드 할 수 있는지 알고 싶습니다.

나는

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

을 시도했다 그러나 그 구문을 좋아하지 않는다.

답변

7

AssociateWith를 사용하여 수행 할 수 있습니다. 별도의 클래스로 정보를 로딩 될 경우, 또한

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

또는 그냥 같이 쿼리를 할 수있는 익명의 하나를 사용할 수 있습니다 :이 작동이 데이터베이스 호출을 의미

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

위대한 단지 내가 무엇을 찾고 있어요 :) 건배 – Alex

1

마지막 게시물 만 원할 경우이 게시물에 대해 간단하게 질의하는 것이 '열심히'로드를 강제하는 것보다 게으른로드를 사용하는 것이 더 효율적이라고 의심됩니다.

+0

. 이상적으로 당신은 하나에서 그것을 할 수 있어야합니다. – Alex