2009-11-19 27 views
1

我正在嘗試在LINQ select中爲GUID值寫入一個字符串。代碼可以在下面看到(其中c.ID是GUID),但出現以下錯誤:在Linq-To-Entity查詢中獲取GUID字符串值時出現問題

無法將類型'System.Guid'強制類型爲'System.Object'。 LINQ to Entities僅支持投射實體數據模型基元類型。

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

對不起。已經嘗試過那一個。它說ToString()沒有在Linq-To-Entities或類似的東西中實現。 – Fischer

+0

感謝Fredou的努力,但那個帖子並沒有真正解決我的問題。 – Fischer