此问题与 LINQ-to-entity 相关。
我发布了一个类似的问题,但没有答案就让人困惑,所以我提供了一个例子和一个新的呼救声。
我有一个“颜色”类,ObservableCollection
其中包含一个有两个成员的类,Index
并且Name
填充如下:
0 - 红色
1 - 蓝色
2 - 绿色
我有一个数据库表,其中包含我最喜欢的颜色的整数列表。我想根据存储在数据库中的索引值返回一个查询,其中包含我最喜欢的颜色的整数值和匹配的名称(由 observablecollection 返回)。
此语句单独工作正常并返回我的颜色名称:-
string ColorName = Colors.Names.Where(x => x.Index == 1).FirstOrDefault().Name;
但是当包含在 LINQ-to-entity 查询中时:-
var query = from c in context.FavoriteColor
select (new Item
{
Id = c.Id,
ColorName = Colors.Names.Where(x => x.Index == c.ColorIndex).FirstOrDefault().Name
});
我收到此错误:
无法创建类型为“blah blah”的常量值。此上下文仅支持原始类型(“例如 Int32、String 和 Guid”)。
我知道该对象可能是在 LINQ 语句中返回的,但我认为通过在末尾指定 .Name 表示法,这是一个字符串成员,它会使用它并将其分配给“ColorName”,唉。