2009-11-19 12 views
1

J'essaye d'écrire une valeur GUID à une chaîne dans un select Linq. Le code peut être vu ci-dessous (où c.ID est GUID), mais j'obtiens l'erreur suivante:Problème lors de l'obtention de la valeur de chaîne GUID dans la requête Linq-To-Entity

Impossible de convertir le type 'System.Guid' en type 'System.Object'. LINQ to Entities ne prend en charge que les types de primitive Entity Data Model.

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

Je mis à jour ma réponse – Fredou

Répondre

2

Une façon serait de briser la requête en L2E et 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

Merci. Cela a fonctionné comme un charme. Pour le pire, ils n'ont pas un moyen plus simple d'obtenir la valeur de chaîne du GUID. – Fischer

+1

Cela a bien fonctionné! Merci pour la perspicacité. J'aime beaucoup mieux que d'avoir à recourir à [SqlFunctions.StringConvert] (http://stackoverflow.com/questions/1228318/linq-int-to-string), qui ne fonctionne pas pour autre chose qu'un nombre. –

0

depuis ma suggestion ci-dessous ne fonctionne pas

regard sur this question et regarder la réponse, cela pourrait être la solution.

essayer cette

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

Désolé. Déjà essayé celui-là. Il dit que ToString() n'est pas implémenté dans Linq-To-Entities ou quelque chose comme ça. – Fischer

+0

Merci pour l'effort Fredou mais ce fil n'avait pas vraiment la réponse à ma question. – Fischer