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为空。我需要某种仅在a.contact2不为null的情况下才会发生的条件连接。
为了明确起见,我尝试实现的逻辑是:检索contact1状态不等于1的所有帐户。如果contact1 == 1,请检查contact2 ==1。如果contact2!= 1,则检索该帐户。
由于帐户中的contact2并非始终填充,因此遇到了问题。当它为null时,我的原始查询无法检索任何内容。
最佳答案
我想我已经正确理解了您的逻辑...
只要帐户上的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 };
关于c# - Linq查询-多个联接到一个表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46812217/