无法隐式转换int类型?从LINQ表达式检索和int字段值时返回int

时间:2019-01-23 01:48:43

标签: c# linq

我正在尝试从基于另一个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。

2 个答案:

答案 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;
}