2012-12-03 1 views
3

형식으로 암시 적으로 변환 할 수 없습니다. IQueryable 개체를 반환 한 GetData 호출을 호출합니다. 나는 필터링하려면 다음 LINQ SelectMany을 사용하고 난 List<MyDataType>을 반환 하는 데 필요한 필드를 선택하여 나는 다음과 같은 오류'System.Collections.Generic.IEnumerable <AnonymousType # 1>'형식을 'System.Collections.Generic.List <사용자 지정 데이터 형식>

암시 적으로 변환 할 수 없습니다를 얻을 여기

유형 System.Collections.Generic.List<AnonymousType#1>System.Collection.Generic.List<MyDataType> 내 코드

입니다
List<CASES> caseList = cs.GetData(foiaNumber).ToList(); 

Dictionary<int, string> NameDict = 
    caseList.ToDictionary(cases => cases.UID, cases =>  cases.NAME); 


List<MyDataType> bindingGrdList = 
    caseList.SelectMany(x => x.ListObject) 
     .Select(n => 
      new { 
        SUBMITTER_NAME = NameDict[n.UID], 
        NUMBER = n.UID, 
        DATE_SENT = n.DATE_SENT, 
        DATE_DUE = n.DATE_DUE, 
        FINAL_DETERMINATION = n.FINAL_DETERMINATION 
       }).ToList(); 

익명 유형 오류를 수정하려면 어떻게해야합니까? 감사. 대신 var를 사용

답변

11

n => new { SUBMITTER_NAME = NameDict[n.UID], NUMBER = n.UID, 
    DATE_SENT = n.DATE_SENT, DATE_DUE = n.DATE_DUE, 
    FINAL_DETERMINATION = n.FINAL_DETERMINATION } 

교체 당신은 MyDataType에 익명의 유형에서 투사를 변경해야

n => new MyDataType { SUBMITTER_NAME = NameDict[n.UID], NUMBER = n.UID, 
    DATE_SENT = n.DATE_SENT, DATE_DUE = n.DATE_DUE, 
    FINAL_DETERMINATION = n.FINAL_DETERMINATION } 
0

봅니다 :

var bindingGrdList = caseList.SelectMany(x => x.ListObject).Select(n => new { SUBMITTER_NAME = NameDict[n.UID], NUMBER = n.UID, DATE_SENT = n.DATE_SENT, DATE_DUE = n.DATE_DUE, FINAL_DETERMINATION = n.FINAL_DETERMINATION }).ToList(); 

이것은 당신이 익명의 유형에 대해 원하는 것입니다 코드에서 유형을 추론 할 것이다.

+0

변수가 메서드에 대해 로컬 인 경우 유용하지만 대개는 결과가 호출자 메서드에 전달됩니다. –

+0

그의 질문의 첫 번째 버전은'bindingGrdList'에 대한'List' 유형 만 언급했습니다. 그 시점에서'MyDataType'에 대한 언급은 없었습니다. 업데이트 된 질문은 롤링이 대답 한 방식이어야합니다. ASP.NET 컨트롤과 같이 매우 유용 할 수 있습니다. 바인딩 데이터는 대개'DataTable' 또는'IEnumerable' 데이터 소스를 소멸시키는'object' 형식입니다. 이 경우 명시적인 클래스를 만들 필요가 없습니다. –

+1

네, 알고 있었고 나는 당신의 대답에 대해 투표했습니다 :-) –

0

와. 이를 위해이 같은 Select을 변경해야

List<MyDataType> bindingGrdList = 
    caseList.SelectMany(x => x.ListObject) 
     .Select(n => 
      new MyDataType 
       { 
        SUBMITTER_NAME = NameDict[n.UID], 
        NUMBER = n.UID, 
        DATE_SENT = n.DATE_SENT, 
        DATE_DUE = n.DATE_DUE, 
        FINAL_DETERMINATION = n.FINAL_DETERMINATION 
       }).ToList(); 

참고 : 나는 이러한 속성이 올바른 속성 MyDataType위한 가정 및 MyDataType가 기본 매개 변수가없는 생성자를 가지고 있어요.

관련 문제