Linq动态查询还可以检查链接表中的一行是否存在
本文关键字:一行 存在 是否 查询 动态 还可以 检查 链接表 检查链接 Linq | 更新日期: 2023-09-27 18:17:01
我有一个LINQ查询,它将几个表连接在一起,并有一个动态where子句。它按预期工作,并以列表的形式返回预定义的类。
我现在还必须连接到一个表,它可能没有行-但仍然带回的结果,如果行不存在。
return (from p in db.POInvMasts.AsNoTracking()
join s in db.POInvMastStatusTypes.AsNoTracking() on p.StatusID equals s.ID
join po in db.POMasts.AsNoTracking() on p.POMastID equals po.ID
join v in db.VendMasts.AsNoTracking() on p.VendorID equals v.ID
//Dynamic link here because there will not always be a carrier at this point
join c in db.CarrierMasts.AsNoTracking() on p.CarrierID equals c.ID into carriers
from c in carriers.DefaultIfEmpty()
//Dynamic link here because there will not always be a GR record at this point
join gr in db.GRMasts.AsNoTracking() on p.ID equals gr.POInvoiceID into GRs
from gr in GRs.DefaultIfEmpty()
where (vendorid == 0 || p.VendorID == vendorid) &&
(statusid == 0 || p.StatusID == statusid) &&
(pomastid == 0 || p.POMastID == pomastid) &&
(grstatusid == 0 || gr.StatusID == grstatusid)
orderby p.ID
我可以做点什么与。defaultisempty ?或者我是否可以在where子句中执行其他操作来查看GR中是否存在任何内容?
总之,我想说:
WHERE gr. statusid == grstatusid OR gr DOES NOT EXIST.
希望这是有意义的。谢谢各位!
实际上我认为你想说左连接…MSDN左连接