我有一个字段列表:
var Fields_Of_User = (from item in db.Field_Relationship
where item.User_ID == ID_Of_User
select item.Field_ID
).ToList();
我想选择问题列表字段
var Questions = (from item in db.Questions
where Fields_Of_User.Any(fieldid => fieldid.Equals(item.Field_ID))
select item
);
然后我将它放入Viewbag
ViewBag.Questions= Questions;
在视图中,我称之为:
@foreach (var t in ViewBag.Questions)
{}
我收到了错误:
无法转换类型'System.Nullable`1 [[System.Int32,mscorlib, Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089]]' 输入'System.Object'。 LINQ to Entities仅支持转换EDM 原始或枚举类型。
问题在于:
where Fields_Of_User.Any(fieldid => fieldid.Equals(item.Field_ID))
但我不知道如何解决它。
答案 0 :(得分:1)
问题很可能是第一个查询产生了一个可空的SELECT * FROM JTEMP_PARTIAL;
列表,而搜索想要一个非空的列表。由于您无论如何都不会匹配int
,因此您可以过滤非空值并在第一个查询中转换为null
:
int
第二个查询需要重写如下:
var Fields_Of_User = (from item in db.Field_Relationship
where item.User_ID == ID_Of_User && item.Field_ID != null
select (int)item.Field_ID
).ToList();