LINQ:可为空的对象必须具有值

  • 本文关键字:对象 LINQ linq sharepoint
  • 更新时间 :
  • 英文 :


让我先说我是 LINQ 的新手,这是我最初不是编写的代码,但正在尝试修复。 我对这个错误做了很多研究,但我还没有发现任何有用的东西。 事实上,这个错误有点让我头晕目眩。 无论如何。。。

我有一个 LINQ 查询,它从三个 SharePoint 列表中选择一些数据。 在这里:

    private void loadPEGrid(int id)
    {
        dc = new SpEntityDataContext(SPContext.GetContext(this.Context).Web.Url);
        EntityList<ProductDocumentMapItem> dMaps = dc.GetList<ProductDocumentMapItem>("Product Document Map");
        object mappedItems = null;
        mappedItems = from m in dMaps
                      join p in dc.PEProducts on m.ProductID.Value equals p.Id.Value
                      join d in dc.ProductDocuments on m.DocID.Value equals d.Id.Value
                      where m.ProductID.Value == id && m.ProductType == "PE"
                      select new { 
                          p.Grade, 
                          d.Path, 
                          d.DocumentType, 
                          d.Title, 
                          d.Name, 
                          Language = d.Language.Title, 
                          m.Id, 
                          DocId = m.DocID };
        GridViewProducts.KeyFieldName = "Id";
        GridViewProducts.DataSource = mappedItems;
        GridViewProducts.DataBind();
    }

以下字段可为空:

  • m.产品编号
  • m.文档ID
  • d.文档类型
  • m.Id

当我调试时,这些都不会引发错误,但是当页面加载时,它会引发错误:System.InvalidOperationException:可为空的对象必须具有值

这是否意味着我选择的其中一个字段为 null,还是其中一个联接字段? 检查数据后,我认为情况并非如此。 如果您需要我的更多信息,请告诉我。

System.InvalidOperationException:可为空的对象必须具有值

当您尝试获取可为空值类型的 Value 属性时,将引发此异常。因此,这意味着以下一项或多项为真:

  • dMaps 中至少有一个对象的属性ProductID等于 null
  • dMaps 中至少有一个对象的属性DocID等于 null
  • dc.PEProducts 中至少有一个对象的属性Id等于 null
  • dc.ProductDocuments 中至少有一个对象的属性Id等于 null
  • 查询未引发异常

相关内容

  • 没有找到相关文章

最新更新