Linq SQL如何做到“在(值的列表)中[列]”
本文关键字:列表 何做 SQL Linq | 更新日期: 2023-09-27 18:14:44
我有一个字段列表:
var Fields_Of_User = (from item in db.Field_Relationship
where item.User_ID == ID_Of_User
select item.Field_ID
).ToList();
我想选择Question by list Fields
var Questions = (from item in db.Questions
where Fields_Of_User.Any(fieldid => fieldid.Equals(item.Field_ID))
select item
);
然后我把它放到Viewbag
ViewBag.Questions= Questions;
View中,我称之为:
@foreach (var t in ViewBag.Questions)
{}
I got the Error:
无法强制转换类型'System. nullable ' 1[[System. null]。mscorlib Int32,版本=4.0.0.0,文化=中性,PublicKeyToken=b77a5c561934e089]]'键入'System.Object'。LINQ到实体只支持铸造EDM基本类型或枚举类型。
问题在:
where Fields_Of_User.Any(fieldid => fieldid.Equals(item.Field_ID))
但我不知道如何修复它
问题很可能是第一个查询生成一个可空的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();
第二个查询需要重写如下:
var Questions = (from item in db.Questions
where Fields_Of_User.Any(fieldid => fieldid == item.Field_ID)
select item
);