我正在尝试从基于另一个ID的表中获取一个int值,我正在使用EF来执行此操作,但是却遇到了无法隐式转换int类型的错误?诠释。此字段允许空值。
public int GetIDFunctionRT(int id)
{
var mRT = context.OrgFunctions.First(bf => bf.FormerID == id);
return mRT.IDF;
}
我试图包括?mRT来处理Nullable但不能正常工作。
public int GetIDFunctionRT(int id)
{
var mRT = context.OrgFunctions.First(bf => bf.FormerID == id);
return mRT.IDF;
}
完成后,我将在另一个表中获得与ID关联的功能ID。
答案 0 :(得分:1)
您有两种方法可以解决这个问题。
使返回类型为Nullable。您可以将返回类型更改为int?
public int? GetIDFunctionRT(int id)
{
var mRT = context.OrgFunctions.First(bf => bf.FormerID == id);
return mRT.IDF;
}
返回int
,但如果它为null,则分配一个默认值。
public int GetIDFunctionRT(int id)
{
var mRT = context.OrgFunctions.First(bf => bf.FormerID == id);
// Where DefaultValue is the value you want to return when it is null,
// could be 0 or anything else depending on your logic.
return mRT.IDF ?? DefaultValue;
}
答案 1 :(得分:1)
如前所述,方法的返回类型为int,但您正在返回int?。 此外,如果没有任何内容,您的“第一人”可能会引发异常。 为了使其可预测,我将使用FirstOrDefault
public int? GetIDFunctionRT(int id)
{
var mRT = context.OrgFunctions.FirstOrDefault(bf => bf.FormerID == id);
return mRT?.IDF.HasValue ? mRT?.IDF : 0;
}