InvalidOperationException:序列不包含任何元素。在 Asp.net 核心 MVC 中 Entity framework
InvalidOperationException: Sequence contains no elements. In Asp.net Core MVC with Entity framework
我在我的一个项目中遇到了这个错误。
InvalidOperationException: Sequence contains no elements.
这是我的代码,我正在尝试使用字符串格式创建自动生成的 ID。
public async Task<IActionResult> Create()
{
int id = _db.Patient.Max(item => item.Id)+1;
ViewBag.autoid = "BL0000"+id.ToString();
return View();
}
如果序列不包含任何元素,max
方法将抛出 InvalidOperation 异常。 - https://docs.microsoft.com/en-us/dotnet/api/system.linq.enumerable.max?view=netframework-4.8
您可以使用一些像这样的扩展方法 -
public static T MaxOrEmpty<T>(this IQueryable<T> query)
{
return query.DefaultIfEmpty().Max();
}
InvalidOperationException: Sequence contains no elements.
如错误信息所说,你的Patient
中没有这样的元素。所以你需要判断它是否包含item。
试试这个:
var data = _db.Patient.Select(item => item.Id);
if(data.Count()==0)
{
int id = 1;
}
else
{
int id = data.Max() + 1;
}
我解决了这个问题
public async Task<IActionResult> Create()
{
//x = _db.Patient.Max(item => item.Id);
x=_db.Patient.DefaultIfEmpty().Max(item => item == null ? 1 : item.Id+1);
ViewBag.autoid = "BL0000"+x.ToString();
return View();
}
我在我的一个项目中遇到了这个错误。
InvalidOperationException: Sequence contains no elements.
这是我的代码,我正在尝试使用字符串格式创建自动生成的 ID。
public async Task<IActionResult> Create()
{
int id = _db.Patient.Max(item => item.Id)+1;
ViewBag.autoid = "BL0000"+id.ToString();
return View();
}
如果序列不包含任何元素,max
方法将抛出 InvalidOperation 异常。 - https://docs.microsoft.com/en-us/dotnet/api/system.linq.enumerable.max?view=netframework-4.8
您可以使用一些像这样的扩展方法 -
public static T MaxOrEmpty<T>(this IQueryable<T> query)
{
return query.DefaultIfEmpty().Max();
}
InvalidOperationException: Sequence contains no elements.
如错误信息所说,你的Patient
中没有这样的元素。所以你需要判断它是否包含item。
试试这个:
var data = _db.Patient.Select(item => item.Id);
if(data.Count()==0)
{
int id = 1;
}
else
{
int id = data.Max() + 1;
}
我解决了这个问题
public async Task<IActionResult> Create()
{
//x = _db.Patient.Max(item => item.Id);
x=_db.Patient.DefaultIfEmpty().Max(item => item == null ? 1 : item.Id+1);
ViewBag.autoid = "BL0000"+x.ToString();
return View();
}