Account:
Id|Contact1|Contact2
Contact:
Id|status
我需要一个LINQ查询,它返回contact1和contact2没有特定状态的所有帐户。
var query = from a in accounts
join c1 in contact on a.contact1 equals c1.id
join c2 in contact on a.contact2 equals c2.id
where c1.status != 1 && c2.status != 1
select new {a.id}
我正在努力克服逻辑。显然,这不会起作用,也不会起作用。只是不确定如何在linq中加入两个表。
编辑: 我发现我的问题在大多数情况下,contact2为null。我需要某种条件连接,只有在a.contact2不为null时才会出现。
为了澄清,我试图实现的逻辑是:检索contact1状态不等于1的所有帐户。如果contact1 == 1,检查contact2 == 1.如果contact2!= 1检索帐户。
遇到问题,因为帐户上的contact2并不总是已填充。如果它为null,则我的原始查询不会检索任何内容。
答案 0 :(得分:0)
我想我理解你的逻辑......
只要帐户中的contact1
或 contact2
的状态不是1,就会检索该帐户。仅返回两个联系人状态均为1的帐户。如果任何一个联系人为空,则会被忽略,因为您无法检查状态。
var query = from a in accounts
from c in contacts
where c.Id == a.Contact1 || c.Id == a.Contact2
where c.Status != 1
select new { a.Id };