我有两张桌子。一个是批处理,它有一个子表请求。
我需要返回批记录,其中一个孩子的状态为0,处理为假。我所拥有的lambda表达式返回所有具有符合条件的子节点的父节点。问题在于它包括不符合标准的儿童。
这是我的表达
List<Batch> batches = _DC.Batches.Where(
c => c.Requests.Any(d => d.Processed == false && d.ApprovalStatus.ApprovalStatusId == 0))
.Select(c => c).ToList();
我如何才能返回符合条件的请求,但如果满足条件仍返回父级?
编辑: 这是我在关闭延迟加载后现在正在做的事情。
List<Batch> batches = _DC.Batches.Where(
c => c.Requests.Any(d => d.Processed == false && d.ApprovalStatus.ApprovalStatusId == 0))
.Select(c => c).ToList();
foreach (Batch batch in batches)
{
_DC.Entry(batch).Collection(c=>c.Requests).Query().Where(c=>c.ApprovalStatusId== 0 && c.Processed == false).Load();
}
答案 0 :(得分:1)
不是从Batches表开始,而是从Request表开始。伪代码:
var requests= _DC.Requests.Where(x => x.Processed == false && x.ApprovalStatusId == 0);
该代码将为您提供处理的所有请求== false&amp;&amp; ApprovalStatusId == 0.从那里,如果你想获得关于批次的信息,那就做:
foreach(var r in requests) {
var batch = r.Batch;
//do something
}