2010-01-28 3 views
3

아래와 같이 Linq 문을 만든 경우 제대로 작동합니다. 개체를 만들려면 Linq 문 만들기

var Jobs = from a in ctx.MyExport 
      select new 
      { 
       FileName = a.FilePath, 
       JobId = a.ID, 
      }; 

나는 다음과 같은 오류가 "그것은 대리자 형식이 아니기 때문에 '문자열을'입력 람다 식을 변환 할 수 없습니다"얻을 익명의 유형보다는 클래스를 사용하려면

. 여기

내가 작업 할 코드 :

var Jobs = from a in ctx.MyExport 
      select new MyClass 
      { 
       FileName = a.FilePath, 
       JobId = a.ID, 
      }; 

을 그리고 여기 클래스는 다음과 같습니다

public class MyClass 
{ 
    public string FileName { get; set; } 
    public Guid JobId { get; set; } 
} 

사람이 내가 잘못하고 어떻게 문제를 해결하는 방법입니다 무엇을 말해 줄 수 있습니까?

+0

"var"를 IEnumerable 으로 바꾸어서 문제를 해결했습니다. – Retrocoder

답변

1

위의 코드가 맞습니다. 우리에게 보여주지 않은 코드 때문에 오류 메시지가 나타납니다.

오류가 발생할 수있는 문자열 변수에 구체화되지 않은 쿼리를 할당하려고합니다. 형식을 으로 변경하면 IEnumerable을 사용하면 쿼리를 즉시 사용할지 여부를 결정할 수 있습니다. 그렇지 않으면 데이터베이스에서 데이터가 추출됩니다. 따라서 해당 솔루션을 사용하지 마십시오.

대답은, 내가 그렇게 Jobs.AsEnumerable() 또는 Jobs.ToList()가 (당신이 원하는에 따라 ,이 컬렉션 foreach는을하고 있다고 가정 사용하기 전에 쿼리를 실현하는 것입니다 그걸로 할) 당신이 해야하는 일입니다.