让我先说一下我是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();
}
以下字段可以为空:
当我调试时,这些都不会引发错误,但是当页面加载时它会: System.InvalidOperationException:Nullable对象必须具有值
这是否意味着我选择的某个字段为空,或者其中一个连接字段?检查数据后,我不认为是这种情况。如果您需要我的更多信息,请告诉我。
答案 0 :(得分:1)
System.InvalidOperationException:Nullable对象必须具有值
当您尝试获取可空类型的Value属性时,会抛出此异常。所以,这意味着以下一个或多个是真的:
dMaps
中的至少一个对象的属性ProductID
等于null dMaps
中的至少一个对象的属性DocID
等于null dc.PEProducts
中的至少一个对象的属性Id
等于null dc.ProductDocuments
中的至少一个对象的属性Id
等于null