无法隐式转换类型'short?'在 LocalAmount = t.EmpNo 中“缩短”。我使用了Convert.ToInt16(t.EmpNo)
但是'join'
子句会出错,并且"incorrect", "type inference failed..."
public class AccountTransaction
{
public Int16 LocalAmount { get; set; }
public String AccountNumber { get; set; }
}
public static IEnumerable<AccountTransaction> GetAllTransactions()
{
using (var context = new SQL_TA_SCOREBOARDEntities1())
{
return (from t in context.EmployeeAccesses
join acc in context.View_HCM
on t.EmpNo equals acc.EmpNo
select new AccountTransaction
{
LocalAmount = t.EmpNo,
AccountNumber = acc.EmailAddress
}).ToList();
}
}
答案 0 :(得分:1)
您的错误消息指出t.EmpNo是 nullable Int 16.请参阅short后面的问号?
'short?' to 'short'
- 其中说:我无法将Int16?
转换为Int16
问号定义,此值可以是null
。
因此,如果您更改模型,则无需解析任何内容,但需要使用t.EmpNo.Value
public class AccountTransaction
{
public Int16? LocalAmount { get; set; }
public String AccountNumber { get; set; }
}
答案 1 :(得分:0)
EmpNo很可能永远不会为空,并且你的一个EmpNo在数据库中可以为空,而另一个则不可用。确保两者都不可为空。如果由于某种原因它们有时应该能够为Null,那么它们必须都可以在db中为空。如果发生了这种情况并且你在数据库中修复了它,你将不得不重新加载你的实体框架模型并再次尝试你的代码。您可能需要更改公共Int16? LocalAmount {get;组;返回公共Int16 LocalAmount {get;组; }。
基本上:Empno必须在任何地方都是不可为空的,或者在任何地方都可以为空。在数据库和代码中。