ASP.NET LINQ MULTIPLE 或 IN WHERE
ASP.NET LINQ MULTIPLE OR IN WHERE
我在 asp.net 核心中有以下代码使用多个或在 where 语句中。它总是提示错误说“处理请求时发生未处理的异常。
NullReferenceException: Object reference not set to an instance of an object.
lambda_method"
if (!String.IsNullOrEmpty(searchString))
{
mTickets = from mt in mTickets
where
(mt.TicketServiceFullNo.Contains(searchString)) || (mt.DeviceNo.Contains(searchString)) select mt;
}
return View(await mTickets.AsNoTracking().ToListAsync());
但是,如果我只是在 where 中使用一个或条件。它会起作用。我不知道为什么。请帮忙。谢谢
这会起作用
if (!String.IsNullOrEmpty(searchString))
{
mTickets = from mt in mTickets
where
(mt.TicketServiceFullNo.Contains(searchString)) select mt;
}
return View(await mTickets.AsNoTracking().ToListAsync());
几乎可以肯定 mt.DeviceNo
为空。
您需要更换:
(mt.DeviceNo.Contains(searchString))
与
(mt.DeviceNo != null && mt.DeviceNo.Contains(searchString))
或
(mt.DeviceNo?.Contains(searchString))
如果您使用的是 C# 6.0
我在 asp.net 核心中有以下代码使用多个或在 where 语句中。它总是提示错误说“处理请求时发生未处理的异常。
NullReferenceException: Object reference not set to an instance of an object. lambda_method"
if (!String.IsNullOrEmpty(searchString))
{
mTickets = from mt in mTickets
where
(mt.TicketServiceFullNo.Contains(searchString)) || (mt.DeviceNo.Contains(searchString)) select mt;
}
return View(await mTickets.AsNoTracking().ToListAsync());
但是,如果我只是在 where 中使用一个或条件。它会起作用。我不知道为什么。请帮忙。谢谢
这会起作用
if (!String.IsNullOrEmpty(searchString))
{
mTickets = from mt in mTickets
where
(mt.TicketServiceFullNo.Contains(searchString)) select mt;
}
return View(await mTickets.AsNoTracking().ToListAsync());
几乎可以肯定 mt.DeviceNo
为空。
您需要更换:
(mt.DeviceNo.Contains(searchString))
与
(mt.DeviceNo != null && mt.DeviceNo.Contains(searchString))
或
(mt.DeviceNo?.Contains(searchString))
如果您使用的是 C# 6.0