返回仅包含符合特定条件的子项的父记录

时间:2014-12-30 21:44:33

标签: linq entity

我有两张桌子。一个是批处理,它有一个子表请求。

我需要返回批记录,其中一个孩子的状态为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();
        }

1 个答案:

答案 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
}