List<tblX> messages = (from x in db.tblX where x.msg_id == id_id
|| x.name == firstName select x).ToList();
我收到错误:
'tblX'上的属性'x'无法设置为'null'值。您必须将此属性设置为“Int16”类型的非null值。
我在db中有一个属性msg_blocked,它是可空的和整数。我知道我需要进行转换,但我不会在我的linq中使用它或需要它。
答案 0 :(得分:3)
似乎tblX的类定义与数据库表示不匹配,因此要么修改类以接受可以为空的值,要么只突出显示必需的字段:
List<tblX> messages = (from x in db.tblX
where (x.msg_id == id_id || x.name == firstName)
select new tblX
{
//required fields
msg_id = x.msg_id,
name = x.name,
...
}).ToList();
附录:你遇到这个问题的原因就在幕后
select x
这被翻译成了一个
select new tblX
它投射到所有可用字段中。提供的代码更明确,并指定要查询哪些字段然后投影到。
答案 1 :(得分:1)
List<tblX> messages = (from x in db.tblX
where (x.msg_id == id_id || x.name == firstName) &&
x.msg_blocked != null
select x).ToList();