0
List<tblX> messages = (from x in db.tblX where x.msg_id == id_id 
                           || x.name == firstName  select x).ToList();

我得到错误:

'tblX' 上的属性 'x' 无法设置为 'null' 值。您必须将此属性设置为“Int16”类型的非空值。

我在 db 中有一个属性 msg_blocked,它可以为空且为整数。我知道我需要进行转换,但我不使用它或在我的 linq 中的任何地方都不需要它。

4

2 回答 2

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 项目到所有可用字段时的幕后 。提供的代码更明确,并指定要查询然后投影到的字段。

于 2012-11-02T08:15:21.437 回答
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();
于 2012-11-02T07:57:10.320 回答