现在,我有一个名为的类TrainingPlan
,如下所示:
public class TrainingPlan
{
public int WorkgroupId { get; set; }
public int AreaId { get; set; }
}
我得到了这些实例的数组,并且需要从数据库中加载匹配的训练计划。和基本上WorkgroupId
形成AreaId
一个复合键。我现在正在做的是TrainingPlan
像这样循环遍历每个:
foreach (TrainingPlan plan in plans)
LoadPlan(pid, plan.AreaId, plan.WorkgroupId);
然后,LoadPlan
有一个 LINQ 查询来加载单个计划:
var q = from tp in context.TPM_TRAININGPLAN.Include("TPM_TRAININGPLANSOLUTIONS")
where tp.PROJECTID == pid && tp.AREAID == areaid &&
tp.WORKGROUPID == workgroupid
select tp;
return q.FirstOrDefault();
问题:
这可行,但是对于大量计划来说它非常慢。我相信如果我可以执行一个 LINQ 查询来一次加载,这可能会快得多TPM_TRAININGPLAN
。
我的问题:
给定一个对象数组TrainingPlan
,如何一次加载每个匹配WorkgroupId
/AreaId
组合?此查询应转换为类似的 SQL 语法:
SELECT * FROM TPM_TRAININGPLANS
WHERE (AREAID, WORKGROUPID) IN ((1, 2), (3, 4), (5, 6), (7, 8));