2009-06-12 2 views
4

나는 정말 기본적인 것을 놓치고 있다고 생각합니다.Return 데이터 유형 Linq 질의 결과

var signatures=from person in db.People 
       where person.Active==true 
       select new{person.ID, person.Lname, person.Fname}; 

이 linq 쿼리는 작동하지만 결과를 클래스의 공용 메서드로 반환하는 방법을 모릅니다.

예제에서는 항상 (IQueryable <People>과 같은) 전체 엔터티를 반환하는 것으로 표시되지만,이 경우 하위 집합을 SomeKindOfList <int, string, string>으로 반환하려는 경우가 있습니다. var를 사용할 수 없기 때문에 무엇을 사용합니까?

감사합니다.

답변

5

당신은 LINQ 쿼리에서 구체적인 유형을 얻을 수 있지만 경우에 당신이

select new{person.ID, person.Lname, person.Fname}; 

대신하는 경우를 사용하여 익명 형식을 구축하는, 당신은 "사람"라는 클래스를 코딩하고, 이런 짓을 :

select new Person(peson.ID, person.Lname, person.Fname); 

귀하의 linq 결과 (서명)는 IEnumerable<Person> 일 수 있으며 귀하의 기능에서 반환 할 수있는 유형입니다.

예 :

IEnumerable<Person> signatures = from person in db.People 
     where person.Active==true 
     select new Person(person.ID, person.Lname, person.Fname); 
+0

내가 담당하는 클래스를 작성하지 않으려면? 어떤 종류의 익명 또는 형식화되지 않은 컬렉션으로 반환 될 수 있습니까? –

+0

아니요 .. var 키워드의 모든 목적은 익명 형식을 편리하게 처리 할 수 ​​있도록하는 것입니다. 그러나 런타임에도 형식이 생성된다는 것을 의미합니다. 많은 익명 형식을 전파해야 할 필요가 있다면 전반적인 디자인에서 뭔가 잘못했을 수 있습니다. 검색된 데이터를 로컬로 작업하지 않는 경우,이를 무언가에 추가하거나 어딘가에 저장해야하며 그러한 종류의 기능에 대해 익명 형식을 사용하고 싶지는 않습니다. – womp

+0

@womp ".... 당신은 전체적인 디자인에 뭔가 잘못된 것을 할 수도 있습니다."<- 당신이 옳을 수도 있습니다! :) 감사! –