我得到一个我无法解决的生活错误。 我得到的错误是如下:序列不包含元素,即使我添加OrDefault
[InvalidOperationException异常]:序列含有 NHibernate.Linq.DefaultQueryProvider.ExecuteQuery(NhLinqExpression nhLinqExpression,IQUERY查询,NhLinqExpression nhQuery)没有元素在 NHibernate.Linq.DefaultQueryProvider .Execute在System.Linq.Queryable.First [TSource](表达式表达)
在NHibernate.Linq.DefaultQueryProvider.Execute [TResult](式 表达)(IQueryable的1 source) at Nichols.Web.Controllers.LoadController.RttInUse(String rttNumber) in c:\projects\NicholsFarms_demo_newCropYear\Nichols\src\Nichols.Web\Controllers\LoadController.cs:line 71 at lambda_method(Closure , ControllerBase , Object[]) at System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary
2参数)在 System.Web.Mvc.ControllerActionInvoker .InvokeActionMethod(ControllerContext controllerContext,ActionDescriptor actionDescriptor,IDictionary的2 parameters) at System.Web.Mvc.Async.AsyncControllerActionInvoker.<BeginInvokeSynchronousActionMethod>b__39(IAsyncResult asyncResult, ActionInvocation innerInvokeState) at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult
2.CallEndDelegate(IAsyncResult的 asyncResult)在 System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.b__3d() 在 System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters。 <> c__DisplayClass46.b__3f() at System.Web.Mvc.Async.AsyncControllerActionInvoker。 <> c__DisplayClass33.b__32(IAsyncResult asyncResult)at System.Web.Mvc.Async.AsyncControllerActionInvoker。 <> c__DisplayClass21。 <> c__DisplayClass2b.b__1c() at System.Web.Mvc.Async.AsyncControllerActionInvoker。 <> c__DisplayClass21.b__1e(IAsyncResult的 asyncResult)在 System.Web.Mvc.Controller.b__1d(IAsyncResult的 asyncResult,ExecuteCoreState innerState)在 System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid1.CallEndDelegate(IAsyncResult asyncResult) at System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult)
1.CallEndDelegate(IAsyncResult的 asyncResult )在 System.Web.Mvc.MvcHandler.b__5(在 System.Web.HttpApplication的IAsyncResult asyncResult,ProcessRequestState innerState)在 System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult的 asyncResult)。 CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() at System.Web.HttpApplication.ExecuteStep(IEx ecutionStep步骤, 布尔& completedSynchronously)
at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid
,我试图使用的代码是:
public ActionResult RttInUse(string rttNumber)
{
int validNumber;
int recommendRttNumber = 0;
var cropYear = _session.Query<CropYear>().SingleOrDefault(x => x.IsCurrent);
if (cropYear.RttRangeHaveBeenConfiguredForNewCropYear)
{
recommendRttNumber = _session.Query<Load>()
.Where(x =>
x.CropYear == cropYear &&
!x.RttNumber.Contains("VOID") &&
x.RttNumber.Length < 9)
.OrderByDescending(x => x.Id)
.Select(x => x.RttNumber)
.FirstOrDefault(x => int.Parse(x) >= cropYear.RttNumberRangeStart &&
int.Parse(x) <= cropYear.RttNumberRangeEnd).AsInt() + 1;
}
if (rttNumber == null || !int.TryParse(rttNumber, out validNumber))
{
return AsJson(
"Rtt number invalid, numeric values only. Next Rtt Number should be " +
recommendRttNumber);
}
var loadExists = _session.Query<Load>()
.Any(x =>
x.RttNumber.ToLower() == rttNumber.ToLower() &&
x.CropYear == cropYear);
if (loadExists)
{
return AsJson("Rtt Number already in use. Next Rtt Number should be " +
recommendRttNumber);
}
return AsJson(true);
}
基本上同时操作员输入一个字符串,如150001的形式,它们进入值进行比较在数据库中可接受的范围内。
作物年有条目,使得2015年有一个可接受的范围从150001到159999可供选择,从RttNumberRangeStart到RttNumberRangeEnd;如果正在使用中,则应该推荐当前使用的rttnumber + 1。
你真的在某处设置了一个默认值吗?如何将[null coaleasing operator ??](https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/operators/null-conditional-operator)与'orDefault'语句一起使用? –
错误转储表示您调用'First()',而不是'FirstOrDefault()'。这是上次运行的错误转储吗?我们可能试图调试错误的问题。 –
也在哪一行发生异常? –