C# 使用linq to实体选择nullable时出错

C# 使用linq to实体选择nullable时出错,c#,entity-framework,lambda,C#,Entity Framework,Lambda,我正在使用linq创建实体。我正试图选择一个带有以下代码的可为null的Int字段,但我得到了异常 List<MyClass> myList = myContext.Accounts .Where(x => x.ACCOUNT_TYPE_ID == 58 && x.IS_DELETED == 0) .Select(x=> new PayorCode {

我正在使用linq创建实体。我正试图选择一个带有以下代码的
可为null的Int
字段,但我得到了
异常

    List<MyClass> myList = myContext.Accounts
            .Where(x => x.ACCOUNT_TYPE_ID == 58 && x.IS_DELETED == 0)
            .Select(x=> new PayorCode
                {
                    Id = x.ID,
                    Payor = x.CODE_NUM + " - "+ x.DESCRIPTION
                }).ToList();
List myList=myContext.Accounts
其中(x=>x.ACCOUNT\u TYPE\u ID==58&&x.IS\u DELETED==0)
.选择(x=>新支付代码
{
Id=x.Id,
付款人=x.代码\数量+“-”+x.说明
}).ToList();

科目
属性中
code\u NUM
可空


我得到下面的例外

无法将类型“System.Nullable”1强制转换为类型“System.Object”。LINQ to实体仅支持强制转换EDM基元或枚举类型

如何使用
Linq to Entites
中的可空字段?我尝试了
Convert.ToInt32
object.Equals
,但两者都不起作用。

任何帮助都将不胜感激

在EF中处理可为空的整数与在正常情况下处理它们没有什么不同。您可以使用
.HasValue
检查它们是否有值,您可以使用
.value
直接读取值,您可以使用
??
进行空合并。根据此属性为null时希望发生的情况,您应该能够执行以下操作:

.Select(x=> new PayorCode
            {
                Id = x.ID,
                Payor = x.CODE_NUM.HasValue 
                            ? x.CODE_NUM.Value + " - "+ x.DESCRIPTION
                            : "CODE_NUM Missing"
            })
或许:

.Select(x=> new PayorCode
            {
                Id = x.ID,
                Payor = (x.CODE_NUM ?? "0") + " - "+ x.DESCRIPTION,
            })
类列表“list”不能与select中引用的强类型类列表payrcode一起使用。将“var query=…”与PayrCode一起使用,或者如果列表与PayrCode相同,则用MyClass替换PayrCode。所以 .Select(x=>newmyclass{….}


然后回答2就可以了。

你说你正在使用
LinqToSql
,但是错误消息说
LINQ to Entities
,这是实体框架,这是完全不同的。它是什么?在
code\u NUM
为空的地方,连接的字符串会发生什么情况?@BenRobinson..对不起..你是对的,它是LINQ to实体由于我使用实体框架通过这种方式,我无法将类型“System.Int32”强制转换为类型“System.Object”。LINQ to Entities仅支持强制转换EDM基元或枚举类型。您确定您的模型/edmx设置正确吗?这在您的模型中似乎是一个问题,而不是任何代码问题。我知道我在EF中使用了数百次可为null的类型,但代码与上述问题非常相似。除此之外,一切正常。因此,假设模型设置正确。嗯。如何检查模型/edmx中是否存在问题?