C# 无法简单地转换int类型?从LINQ表达式检索和整型字段值时为int

C# 无法简单地转换int类型?从LINQ表达式检索和整型字段值时为int,c#,linq,C#,Linq,我试图从一个基于另一个ID的表中获取一个int值,我使用EF来实现这一点,但是我得到了一个无法隐式转换int类型的错误?到int。此字段允许空值 public int GetIDFunctionRT(int id) { var mRT = context.OrgFunctions.First(bf => bf.FormerID == id); return mRT.IDF; } 我曾尝试将?mRT包括在内,以处理可为空但不起作用的问题 public int GetIDFuncti

我试图从一个基于另一个ID的表中获取一个int值,我使用EF来实现这一点,但是我得到了一个无法隐式转换int类型的错误?到int。此字段允许空值

public int GetIDFunctionRT(int id)
{
  var mRT = context.OrgFunctions.First(bf => bf.FormerID == id);
  return mRT.IDF;
}
我曾尝试将?mRT包括在内,以处理可为空但不起作用的问题

public int GetIDFunctionRT(int id)
{
  var mRT = context.OrgFunctions.First(bf => bf.FormerID == id);
  return mRT.IDF;
}

完成后,我将获得与另一个表中的ID关联的函数ID。

您有两个选项来实现这一点

使返回类型为空。您可以通过将返回类型更改为
int?

public int? GetIDFunctionRT(int id)
{
  var mRT = context.OrgFunctions.First(bf => bf.FormerID == id);
  return mRT.IDF;
}
返回
int
,但如果为空,则指定一个默认值

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

你有两个选择来解决这个问题

使返回类型为空。您可以通过将返回类型更改为
int?

public int? GetIDFunctionRT(int id)
{
  var mRT = context.OrgFunctions.First(bf => bf.FormerID == id);
  return mRT.IDF;
}
返回
int
,但如果为空,则指定一个默认值

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

如前所述,方法的返回类型是int,但您返回的是int?。 此外,如果没有异常,您的第一个可能会抛出异常。 为了使其可预测,我将使用FirstOrDefault

public int? GetIDFunctionRT(int id)
{
  var mRT = context.OrgFunctions.FirstOrDefault(bf => bf.FormerID == id);
  return mRT?.IDF.HasValue ? mRT?.IDF : 0;
}

如前所述,方法的返回类型是int,但您返回的是int?。 此外,如果没有异常,您的第一个可能会抛出异常。 为了使其可预测,我将使用FirstOrDefault

public int? GetIDFunctionRT(int id)
{
  var mRT = context.OrgFunctions.FirstOrDefault(bf => bf.FormerID == id);
  return mRT?.IDF.HasValue ? mRT?.IDF : 0;
}

您是否尝试过
fb.FormerID.Value==id
?如果IDF是可为null的int类型,那么您可以返回mRT.IDF.HasValue?mRT.IDF.Value:0;您是否尝试过将返回类型设置为可空(public int?)?谢谢Xiaosu,这真的很有帮助…我将使用@Xiaosu,您尝试过的
fb.FormerID.Value==id
?如果IDF是可空的int类型,那么您可以返回mRT.IDF.HasValue?mRT.IDF.Value:0;你试过让返回类型为null(public int?)吗?谢谢小苏,这真的很有帮助…我将使用@Xiaosu'再次检查你的第二个选项!请再次检查您的第二个选项!接得好,我变了接得好,我变了