在linq

问题描述 投票:0回答:1
EmpId

EmpName

PrimaryMobile

我在DB中具有以下字段
claimTable
EmpId

ClaimId

...
我想从

ClaimDetails

我可以通过循环来实现此操作:
claimTable
这给出了正确的结果,但是,我本人并不相信数据库命中的复杂性和数量以获得所需的结果。
    

目前,您每次都会在循环中击中数据库。您可以通过使用

IN
方法来替换
Employees
循环中的Where子句。
EmpsByManager(ManagerId)
,也不是,
public dynamic getActiveClaims(int ManagerId) { db.Configuration.ProxyCreationEnabled = false; var myEmps = db.getEmpDetofManager(ManagerId).ToList(); List<List<claimJSON>> claimsList = new List<List<claimJSON>>(); foreach(var Emp in myEmps) { claimsList.Add(db.claimJSONs.Where(e => e.EmpId == Emp.EmpId && e.claimstatus != 0 && e.claimstatus != 8).ToList()); } return claimsList; }

变量中的结果将是一个,而不是

foreach

这将导致DB击中2个命中。一个用于存储的proc,另一个用于从索赔json表中获取数据的数据,以获取我们从存储的proc结果中获得的empids列表。
    

c# entity-framework linq
1个回答
1
投票
即使没有EF的限制,您也无法加入 - 存储过程的输出...不,您没有办法。并非没有重写SP。无论如何,它都不应该在那里 - 此功能更适合一个可以以更复杂的查询样式使用的函数。有人将其强迫进入SP-现在您必须遵守限制。


最新问题
© www.soinside.com 2019 - 2025. All rights reserved.