2011-12-10 72 views
0

下面的代碼被賦予以下錯誤:LINQ/Projection - 表達式樹可能不包含動態操作?

「表達式樹可以不包含一個動態操作」

var x = db.Data.Select(x => new { name = TitleHT[x.TitleId], x.TitleId }).GroupBy(x => x.name); 

TitleHT是Dictionary<int, string>這樣我可以查找的字符串表示的TitleId。因此,我試圖在查詢中將該名稱分配給該字符串文字。 TitleId是int類型的嗎?不知道這件事是否重要。

+0

所以...做任何部分涉及動態?什麼是db.Data,例如? –

回答

5

你用「linq-to-sql」標記了你的問題,所以我假設db是一個L2S DataContext。在這種情況下,LINQ提供程序會嘗試將TitleHT [x.TitleId]轉換爲SQL語句,但無法執行。像這樣的東西應該工作:

var x = db.Data 
    .Select(x => x.TitleId) 
    .ToList() // Subsequent projection using LINQ-to-Objects 
    .Select(x => new { name = TitleHT[x], TitleId = x }) 
    .GroupBy(x => x.name); 
+2

雖然你可能不應該使用'ToList()',可以考慮使用'AsEnumerable()'。 –

+2

@JeffMercado對於某些場景是如此。這真的取決於你是否想要保持延遲執行或不。 –

+0

@PhilKlein:謝謝你的回覆。 x.TitleId沒有從第二個Select中解析出來。每個intellisense顯示的唯一選項是「HasValue」,「Value」,Equals等。 – JaJ

相關問題