【发布时间】:2013-03-07 14:01:28
【问题描述】:
这个问题与 LINQ-to-entity 相关。
我发布了一个similar question,但没有答案就让人困惑,所以我提供了一个例子和一个新的呼救声。
我有一个“颜色”类,其中包含一个 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”,可惜不是。
【问题讨论】:
-
请包含“blah blah blah” 我只能假设它是“ObservableCollection
”,只有在编译器中才能使用。 -
Aron - 它是 observablecollection 中包含的类型。谢谢
-
EF 无法将 Color 序列化为 SQL。您需要在 .net 而不是 SQL 中进行查找。
-
是的,这正是我得出的结论。我担心我将不得不迭代集合并更新该循环中的颜色。只是看起来有点乱。
标签: c# linq linq-to-entities