C#LINQ存储int?作为int

Hak*_*Zim 2 .net c# linq

我正在查询数据库以获取contractorid字段值,该值将返回一个值或null.我需要将它作为整数传递给类方法(int,int).但显然它与最佳超载方法不匹配.我怀疑它是因为int?contractorid值可能为null并且无法转换为整数.但如果我删除?并只使用int然后我得到关于single()linq方法的错误

    int UserID = new BussinessComponent().LoginDetails.UserID;
    using (var db = new DataContext())
    {
        int? ContractorID =
              db
                  .Users
                  .Where(x => x.UserID == UserID)
                  .Select(x => x.ContractorID)
                  .Single();


        ltlOJ.Text = DashboardComponent.GetJobs(UserID,ContractorID ).ToString();
   }
Run Code Online (Sandbox Code Playgroud)

Rhu*_*orl 8

实际上,您需要将您转换int?为a,int因为null无法转换为int.

您可以使用'GetValueOrDefault()`来为您提供默认值.

ltlOJ.Text = DashboardComponent.GetJobs(UserID, ContractorID.GetValueOrDefault(0))
    .ToString();
Run Code Online (Sandbox Code Playgroud)