0

這是我的要求Nhibernate - 無法查詢IN操作

我有一個位置ID列表。我需要返回的所有實體,其中使用entity.Location.Id[list of Location Ids]

查詢

var res = from m in queryable 
         from id in locations 
         where m.Location.Id == id 
         select m; 

可查詢的IQueryable<Entity>NHibernate Repository 位置返回是IDs整數列表。

上面的查詢會引發錯誤。

「不支持指定的方法」。

任何幫助表示讚賞。

System.RuntimeMethodHandle.InvokeMethod(對象目標,對象[] 參數,簽名Sig,布爾構造函數)在 System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(對象OBJ, 對象[]參數,對象[]參數)在 System.Reflection.RuntimeMethodInfo.Invoke(對象OBJ,的BindingFlags invokeAttr,粘結劑粘結劑,對象[]參數,CultureInfo的培養物) 在 System.Web.Http.OData.Query.InlineCountQueryOption.GetEntityCount(IQueryable的 查詢)在 System.Web.Http.OData.Query.ODataQueryOptions.ApplyTo(IQueryable 查詢,ODataQuerySettings querySettings)在 System.Web.Http.QueryableAttribute.ExecuteQuery(對象響應, HttpRequestMessage請求,HttpActionDescriptor actionDescriptor)在 System.Web.Http.QueryableAttribute.OnActionExecuted(HttpActionExecutedContext actionExecutedContext)在 的System.Web。 Http.Filters.ActionFilterAttribute.OnActionExecutedAsync(HttpActionExecutedContext actionExecutedContext,的CancellationToken的CancellationToken)---從先前的位置在那裏引發異常--- 堆棧跟蹤的結尾處 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任務 任務)在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebug gerNotification(任務 任務)在 System.Web.Http.Filters.ActionFilterAttribute.d__5.MoveNext() ---從以前位置拋出異常的堆棧跟蹤結束---在 System.Runtime.CompilerServices.TaskAwaiter .ThrowForNonSuccess(任務 任務)在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任務 任務)在 System.Web.Http.Filters.ActionFilterAttribute.d__0.MoveNext() ---從以前的堆棧跟蹤的結尾拋出異常的位置---在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任務 任務)在 System.Runtime.CompilerServices.TaskAwaiter.Handle NonSuccessAndDebuggerNotification(任務 任務)在System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()在 System.Web.Http.Filters.ActionFilterAttribute.d__5.MoveNext() ---從以前的位置拋出---在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() System.Web。Http.Filters.ActionFilterAttribute.d__5.MoveNext() ---從以前位置拋出異常的堆棧跟蹤結束---在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任務 任務)在 System.Runtime .CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任務 任務)在 System.Web.Http.Filters.ActionFilterAttribute.d__0.MoveNext() ---從先前的位置在那裏引發異常---在 系統堆棧跟蹤的結尾。 Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任務 任務)在System.Runtime。

回答

1

做你想要什麼正確的方法是:

var res = from m in queryable 
      where locations.Contains(m.Location.Id) 
      select m;