2009-11-19 2 views
1

linq select에서 문자열에 GUID 값을 쓰려고합니다. 코드는 아래에서 볼 수 있습니다 (c.ID는 GUID 임). 그러나 다음 오류가 발생합니다.Linq-To-Entity 쿼리에서 GUID 문자열 값을 가져 오는 중 문제가 발생했습니다.

'System.Guid'유형을 'System.Object'유형으로 변환 할 수 없습니다. 엔터티에 대한 LINQ는 엔터티 데이터 모델 기본 형식을 캐스팅하는 기능 만 지원합니다.

var media = (
       from media in Current.Context.MediaSet 
       orderby media.CreatedDate 
       select new Item 
       { 
        Link = "~/Media.aspx?id=" + media.ID, 
        Text = "Media", 
        Time = media.CreatedDate 
       } 
      ).ToList(); 
+0

미안 내 대답 – Fredou

답변

2

한 가지 방법은 L2E 및 L2O에 쿼리를 떨어져 휴식하는 것보십시오

var q = from media in Current.Context.MediaSet 
     orderby media.CreatedDate 
     select new 
     { 
      Id = media.ID, 
      Time = media.CreatedTime 
     }; 
var media = (
       from m in q.AsEnumerable() 
       select new Item 
       { 
        Link = "~/Media.aspx?id=" + q.Id.ToString, 
        Text = "Media", 
        Time = q.Time 
       } 
      ).ToList(); 
+0

감사합니다. 이것은 매력처럼 작동했습니다. 나쁜 그들은 비록 GUID의 문자열 값을 얻을 수있는 간단한 방법이 없어. – Fischer

+1

위대한 작품! 통찰력에 감사드립니다. 나는 이것이 SqlFunctions.StringConvert (http://stackoverflow.com/questions/1228318/linq-int-to-string)에 의존하는 것보다 훨씬 낫다. 이것은 숫자가 아닌 다른 것은 작동하지 않는다. –

0

아래에있는 내 제안 this question에서

보고 일을하고 대답을 보지 않기 때문에,이 해결책이 될 수 있습니다.

var media = (
       from media in Current.Context.MediaSet 
       orderby media.CreatedDate 
       select new Item 
       { 
        Link = "~/Media.aspx?id=" + media.ID.toString(), 
        Text = "Media", 
        Time = media.CreatedDate 
       } 
      ).ToList(); 

+0

을 업데이트했습니다. Allready 그걸로 tryed. ToString()은 Linq-To-Entities 또는 이와 비슷한 것으로 구현되어 있지 않습니다. – Fischer

+0

노력 Fredou 주셔서 감사하지만 그 스레드 정말 내 질문에 대한 답변을하지 않았다. – Fischer