2012-02-07 3 views
0

동적 유형을 변환 할 수 없습니다. 그러나 내 쿼리에 select new을 사용하려고하면 오류가 발생합니다. 암시 적으로 System.Collections.Generic.List<AnonymousType#1>System.Collections.Generic.IList<ITEX.Models.Test>으로 변환 할 수 없습니다.암시 내 모델에서 하나의 방법을 만들어 LINQ - 투 - SQL

실마리가 있습니까? 감사.

public class Test 
{ 
    public int Tnum { get; set; } 
    public int Level {get;set;} 
} 

을 그리고 쿼리가 같은 것을 보일 것입니다 : 당신이 경우

public IList<Test> GetData(int IDCus) 
{ 
    var list = (
       from j in Context.Test 
       join y in this.Context.Test1 
        on j.ID equals y.ID 
       where 
        j.ID == IDCus 
       select new Test() 
        { 
         Tnum = j.Ynum, 
         Level = y.Level 
        } 
      ); 
    return list.ToList(); 
} 

+0

오류 자체를 말하는 도움이되기를 바랍니다

public IList<Test2> GetData(int IDCus) { var list = ( from j in Context.Test join y in this.Context.Test1 on j.ID equals y.ID where j.ID == IDCus select new Test2() { Tnum = j.Ynum, Level = y.Level } ); return list.ToList(); } 

을, 당신은 IList를 반환하는 ,하지만 select를 사용하여 새 작업을 수행하면 "테스트"가 아닌 익명 유형이 생성됩니다 – Flowerking

+0

감사합니다. 하지만 당신이 말할 수 있겠어요, 왜 당신이 말했죠, 나는 익명의 타입을 만들고 있는데 Test가 아닌가요? 왜냐하면, j.Ynum은 "Test"테이블에서 가져온 필드이고 y.Level은 Test1 테이블에서 가져 오는 필드입니다. – Nothing

+1

"select"를 위와 같이 사용하면 컴파일러에서 익명으로 만든 새로운 "Type"에 결과를 투영합니다 (C# 3.0의 기능). 반환 할 타입에 유형을 지정하려면 새 Test() {Tnum = j.Ynum, Level = y.Level}을 선택해야합니다. 이렇게하면 새 익명을 작성하는 대신 Test 객체가 반환됩니다. 유형. – Flowerking

답변

1

양쪽 모두 YnumLevel 먼저 클래스 Test이 보이는 것을 확인해야하는 int입니다 이 호출에 대해 새 클래스를 만들어야하는 다른 곳의 Test을 사용하고 있다면 Test2이라고 부를 수 있습니다. 그런 다음 클래스는 다음과 같아야합니다

public class Test2 
{ 
    public int Tnum { get; set; } 
    public int Level {get;set;} 
} 

그리고 정보를 얻기위한 기능을 다음과 같이한다 :이

+0

잘 작동합니다. 감사. – Nothing

+0

도움이 되서 기쁩니다 ... – Arion

관련 문제