2011-02-04 2 views
1

거대한 열이있는 테이블이 있습니다. 어떻게 해당 열에 매핑 된 속성을 채우지 않고 엔티티를 선택할 수 있습니까?특정 열을 필터링하는 동안 엔티티를 얻는 방법

내가 한 생각을 가지고,하지만 난 그게 올바른 접근 방식인지하지 확신 :

ctx.Items.Where(....).Select(a=> new Item { ... bind only needed columns }).ToList() 

그 실체가 DataContext를 부착 할 것인가?

답변

2

Item 이외의 다른 유형을 사용하십시오. 예 : 익명 유형 또는 DTO 그러면 쿼리가 원하는대로 정확하게 수행됩니다.

2

당신은 내가 생각하는 바른 길을 가고 있습니다. 이것은 미리 정의 된 열/속성 만 채워서 객체를 인스턴스화하는 방법입니다. this post을보십시오.

편집 :이 줄리 러먼에서이며,이 질문에 요구되는 것입니다

나는 믿는다 : LINQ의 방법을 기반 쿼리 구문을 사용하여 프로젝트에 LINQ 쿼리 방법에

계획, 당신은 선택 메서드를 사용하고 해당 매개 변수에서 원하는 속성 을 식별합니다. 메서드 기반 쿼리 구문을 사용하려면 람다에 익명 형식을 만들기위한 구문이 이어야합니다 (예제 4-4 참조).

예 4-4. LINQ의 방법 기반 구문

context.Contacts 어디에요 (c => c.FirstName == "로버트")을 이용하여 투사 ALL 기타 사항 서보 -OFF (c => 새로운 {c.Title, c.LastName, C .FirstName})

+0

쿼리가 실행시 실패합니다. 시도 해봐. –

+0

왜 Craig는 실패합니까? 그리고 해결책은 무엇입니까? 드미트리가 이걸 읽는다면. –

+0

엔티티 유형으로 투영 할 수 없으므로 실패합니다. 내가 말했듯이 : 시도해보십시오. 오류 메시지는 충분히 명확합니다. 나는 이미 내 대답에 해결책을 주었다. –

관련 문제