LINQ / Projection - 表达式树可能不包含动态操作?

时间:2011-12-10 22:09:51

标签: linq linq-to-sql

以下代码出现以下错误:

“表达式树可能不包含动态操作”

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

TitleHT是Dictionary<int, string>,因此我可以查找TitleId的字符串表示形式。因此,我试图在查询中为此字符串文字指定名称。 TitleId的类型是int?不确定这是否重要。

1 个答案:

答案 0 :(得分:5)

您使用“linq-to-sql”标记了您的问题,因此我假设db是L2S DataContext。在这种情况下,LINQ Provider会尝试将TitleHT [x.TitleId]转换为SQL语句,但无法将其转换为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);