我有一张主表:进程。 进程有一个名为:Movements的详细子表。 运动的一个鉴别者被命名为:分配。 它有一个名为Number的字段。 我需要过滤具有Movements-> Distribution-> Number的流程,例如'%123%'。
我尝试过:
IEnumerable<Process> filtereds = db.Processes
.Include(s => s.Movements)
.Where(sm => sm.Number.Contains("%123%"))
我被警告说,号码不存在。我认为这是因为Number是一个分配领域,是运动的一个孩子。
然后我尝试了:
IEnumerable<Process> filtereds = db.Processes
.Include(s => s.Movements)
.OfType(Distribution)
.Where(sm => sm.Number.Contains("%123%"))
我被警告说,分发在这种情况下无效。
然后我发现:
IEnumerable<Process> filtereds = db.Processes
.Include(s => s.Movements)
.OfType<Distribution>()
.Any(c => c.Number.Contains("123")));
但是当我运行两个过滤器参数时:
IEnumerable<Process> filtereds = db.Processes
.Include(c => c.Customers
.Include(s => s.Movements)
filtereds = filtereds
.Where(sc => sc.Movements.OfType<Distribution>().Any(c => c.Number.Contains(model.Nbr)));
filtereds = filtereds
.Where(sc => sc.Customer.Any(cl => cl.Customer.Name.Contains(model.Customer)));
第一个正确运行。 但第二次回归: “已经有一个与此命令关联的开放DataReader必须先关闭。”
答案 0 :(得分:0)
如果它位于辅助表中,您应该能够包含<ul>
<li>
<a href="#">parent</a>
</li>
<ul>
<li>
<a href="#">level1</a>
<ul>
<li>
<a href="#">level2</a>
</li>
</ul>
</li>
</ul>
</ul>
:
Distribution
我不确定您是否需要先db.Processes
.Include(p => p.Movements.Distribution)
.Where(p => p.Movements.Any(pm => pm.Distribution.Any(pmd => pmd.Number.Contains("123")))
。