2011-09-16 3 views
3

이 코드를 실행할 때 예외가 발생합니다 :LINQ : Guid를 문자열로 변환

var result = from menu in menuBus.GetMenus() 
      orderby menu.InternalName 
      select new 
      { 
       Value = menu.ID.ToString(), 
       Text = menu.InternalName 
      }; 

var result = allMenus.ToList(); 

오류 메시지 : LINQ to Entities가 'System.String ToString()'메서드를 인식하지 못하고이 메서드를 a로 변환 할 수 없습니다. 저장된 표현.

그래서 뭔가가 Value = menu.ID.ToString()이 잘못되었다고 생각합니다. ID 속성은 GUID (MS SQL의 UniqueIdentifier)로 정의됩니다.

누구에게도 해결책이 있습니까?

대단히 감사합니다 !!!

답변

6

에 GUID를 변환하는 동안 다른 목록에 값을 복사합니다.

var result = (from menu in menuBus.GetMenus() 
         orderby menu.InternalName 
         select new 
         { 
          Value = menu.ID, 
          Text = menu.InternalName 
         }).ToList(); 


var result2 = (from menu in result select new {Value=menu.Value.ToString(),Text=menu.Text}).ToList(); 
+0

George는 귀하의 솔루션이 저에게 큰 도움이되었습니다. – Ingmar

1

필자는 Linq 쿼리에서 엔터티에 대한 linq이 (SQL 문으로 변환 할 수 없기 때문에) 무엇을해야할지 모르기 때문에 .ToString()을 가질 수 없다는 것을 알고있다.

select new 
{ 
    Value = menu.ID, 
    Test = menu.InternalName 
} 

로 선택 부분을 한 후 바로 사용자 foreach는 루프를 가지고 있고 문자열

당신은 데이터베이스를 조회 한 후 다른 쿼리를 통해 목록을 실행해야
+1

여기서 foreach는 필요하지 않으며 개체 쿼리에 추가 linq를 사용할 수 있습니다. –