2016-06-14 3 views
0

Linq를 사용하여 List<Application>을 필터링하여 해당 목록 내의 두 필드를 연결하고 결과를 반환했습니다. 이제 해당 목록을 호출하는 메서드로 반환해야합니다.IEnumerable <AnonymousType>을 <T> 목록으로 변환하는 방법?

Linq 필터링의 결과는 이므로 반환 할 수 없으므로 반환 방법은 List<Application>입니다.

내가 처음 시도 않은 것은 ToList 방법을 사용하여 IEnumerable을 변환하는 것입니다하지만 컴파일러 오류가 발생합니다 :

IEnumerable does not contain a definition for ToList() 

질문 :

가 어떻게 변환하거나하는 IEnumerable을 전송할 수 있습니다 목록 ?

코드 :이 할당이 두 필드을 연결하고 목록으로 돌아가려면 목록에서 수행

아래

   var filteredAppList = applicationList.Select(c => new { c.RID, RID_APP_FIELD = c.RID + " " + c.BusinessFriendlyName }); 

그리고 내가이로는 IEnumerable을 반환하려고하는 방법이다 목록 :

   return filteredAppList.ToList<Application>(); 
+0

왜 다시 응용 프로그램 클래스로 변환하려고합니까? –

+2

개체의 * * 응용 프로그램 개체가 * 없습니다. 그것들은 익명의 타입의 인스턴스입니다. 기본적으로'.Select (x => 새로운 응용 프로그램 {RID = x.RID, ...})'등 수동 또는 자동; 'Application' 인스턴스를 원한다면 왜 anonymous 타입으로 바꾸고 있습니까? –

+0

'RID_APP_FIELD'은'Application'의 속성입니까? 그렇지 않다면,'return RID + ""+ BusinessFriendlyName'과 같이'ToString'을 재정의해야합니다. 그런 다음 새로운 인스턴스를 만들 필요는 없지만'applicationList.Where (conditions) .ToList()'를 반환 할 수 있습니다. –

답변

3

문제는 이전 쿼리의 순서를 반환 익명 개체를 Application 유형으로 변환하려고합니다. 문제의 원인은 시도해보십시오.

filteredAppList.Select(x=> new Application() 
          { 
           // set properties. 

          }) 
       .ToList(); 
+0

"RID + BusinessFriendlyName"형식의 목록을 반환해야 결과 필터링 목록이 다음과 같을 것입니다. "879898 TestAppOne"등 .. 위의 속성을 설정하는 방법에 대한 자세한 정보를 제공 할 수 있습니까? –

+0

'Application' 클래스는 어떻게 정의합니까? 여기서 응용 프로그램 속성을 설정해야합니다. –

1

당신은 당신이 단순히 익명 형식 피해야한다 Application 개체를 반환해야한다는 것을 알고있는 경우 : 나는 당신의 익명 형식이 Application 유형 엄격하게 동일했다 가정

var filteredAppList = applicationList.Select(c => new Application { RID = c.RID, RID_APP_FIELD = c.RID + " " + c.BusinessFriendlyName }); 

return filteredAppList.ToList(); 

을하지만, 그 수도 있지 그럴 수있다. 중간 단계에서도 익명 형식을 사용할 수 있지만 런타임은 익명 형식을 Application으로 자동 변환 할 수 없으므로 원하는 형식의 인스턴스로 다시 투영하는 것이 유일한 옵션입니다.

var filteredAppList = applicationList.Select(c => new { RID = c.RID, RID_APP_FIELD = c.RID + " " + c.BusinessFriendlyName }); 

return filteredAppList.Select(anon => new Application { RID = anon.RID, OtherApplicationProperty = anon.RID_APP_FIELD }).ToList(); 
관련 문제