0
私はEF Frameworkを使用してSQL DBからデータを取得しています。Entity FrameworkでLINQでINクエリを使用できません
サブリクエスト表は下記のようになります。
この表では「org_assigneddeptは、」別の部署表への外部キーです。
私はDepartmentsのリストをInputとして持っており、org_assigneddeptがリストと一致するDBからそれらの行だけを取り出したいとします。
私の全体のコードを見つけてください: -
private List<EventRequestDetailsViewModel> GetSummaryAssignedDeptEventRequests(List<EmpRoleDeptViewModel> vmDept)
{
List<EventRequestDetailsViewModel> vmEventRequestDeptSummary = new List<EventRequestDetailsViewModel>();
RequestBLL getRequestBLL = new RequestBLL();
Guid subRequestStatusId = getRequestBLL.GetRequestStatusId("Open");
using (var ctxGetEventRequestSumm = new STREAM_EMPLOYEEDBEntities())
{
vmEventRequestDeptSummary = (from ers in ctxGetEventRequestSumm.SubRequests
where vmDept.Any(dep=>dep.DeptId == ers.org_assigneddept)
select new EventRequestDetailsViewModel
{
SubRequestId = ers.org_subreqid
}).ToList();
}
}
それは、LINQクエリ・レベルで、次のエラーを与えている: -
System.NotSupportedException:「 の一定の値を作成することができません。 'Application.Business.DLL.EmpRoleDeptViewModel'と入力します。このコンテキストでは、プリミティブ 型または列挙型のみがサポートされています。
どのように私は結果を達成することができますようあなたはSQLに部門のVMを渡すことはできません
問題の原因を特定するの答えの最初の部分は正しいです。しかし、 'Any'での使用法は、' IN(...) '変換を行うために、' Contains'( 'departmentIds.Contains(ers.org_assigneddept)' –
をお手伝いします。私はContainsを使用して結果を得ましたContains()とAny()の使用には大きな違いがありますか – user1843970
実体のIDに対するIDのコレクションをチェックする式なので、回答を更新する.containsと.Anyの違いは、ここで見つけることができます:https://stackoverflow.com/questions/23526773/what-is-the-difference-between-contains-and-any-インリンキュー –