序列不包含元素Error Max()

时间:2016-08-15 13:47:51

标签: c# entity-framework linq

我正在:

  

序列不包含元素

private int? GetPrecedingSibling(int? contentid,int? templateid)
{
    var value = _sequenceTemplateItemService.Query(e => e.templateId == templateid && e.contentItemId == contentid).Select(t => t.id).Max();
    if (value != 0)
        return value; 
    return null;
}

1 个答案:

答案 0 :(得分:12)

您的查询未返回任何id个。这就是为什么例外。如果您的id类型为int?,请使用DefaultIfEmpty(),如:

var value = _sequenceTemplateItemService.Query(e => e.templateId == templateid && e.contentItemId == contentid)
                    .Select(t => t.id)
                    .DefaultIfEmpty()
                    .Max();

其他选项是检查Any条记录,然后返回Max或null。

var tempResult = _sequenceTemplateItemService.Query(e => e.templateId == templateid && e.contentItemId == contentid)
                    .Select(t => t.id);

if (tempResult.Any())
{
    return tempResult.Max();
}
else
{
    return null;
}