2013-01-14 2 views
0

나는이 VS2012 & EF5 사용 "FullList"으로 결과를 형성하기 위해 노력하고있어 : 여기LINQ : 형성하는 하위 쿼리 오류

public class FullList { 
    public int ListID {get; set;} 
    public string ListName {get; set;} 
    public List<ListItems> ListItems {get; set;} 
} 

public class ListItems { 
    public int ItemID {get; set;} 
    public string ItemName {get; set;} 
} 

을 그리고 것은 엔티티에 LINQ "의 짜증나는 오류를 생성하는 내 쿼리입니다 메소드를 인식하지 못합니다. blahblahblah .....이 메소드는 스토어 식으로 변환 될 수 없습니다. "

List<FullList> x = (from l in entities.Lists 
        select new FullList 
        { 
         ListID = l.ListID, 
         ListName = l.ListName, 
         ListItems = l.ListItems.Select(li => new ListItems 
            { 
             ItemID = li.ItemID, 
             ItemName = li.ItemName 
            }).ToList() 
        }).ToList(); 

잘 컴파일되고 나에게 제대로 작동하는 것처럼 보이지만 주사위는 없습니다 ... 어떤 아이디어입니까? 미리 감사드립니다.

답변

1

불행히도 EF는 블록 선택의 범위에서 값을 수정하는 것을 지원하지 않습니다. 그래서 당신은 그것을 실행, 쿼리를 작성하고 매핑 된 객체의 목록 형식으로 결과를 얻고 그 후 ... 등 당신의 ViewModel, DTO로 변환을 수행 같은 것을 시도 할 수 :

List<FullList> x = (from l in entities.Lists 
        select l) // create your query 
        .ToList() // execute query and get the List<Entity> 
        .Select(l => new FullList // customize your result (convert to List<FullList>) 
           { 
            ListID = l.ListID, 
            ListName = l.ListName, 
            ListItems = l.ListItems.Select(li => new ListItems 
             { 
              ItemID = li.ItemID, 
              ItemName = li.ItemName 
             }).ToList() 
           }).ToList(); 
+0

가 참으로 내가 두려웠을 그게 내가 필요로하는 것을 위해, 이것은 완벽하게 작동 할 것이다. 감사! – Losbear