C# 使用linq to实体选择nullable时出错
我正在使用linq创建实体。我正试图选择一个带有以下代码的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 {
可为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中是否存在问题?