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 不为空时才会发生的条件连接。
澄清一下,我试图实现的逻辑是:检索 contact1 状态不等于 1 的所有帐户。如果 contact1 == 1,请检查 contact2 == 1。如果 contact2 != 1 检索帐户。
遇到问题是因为帐户上的 contact2 并不总是被填充。当它为空时,我的原始查询不会检索到任何内容。
最佳答案
我认为我正确理解了您的逻辑...
只要帐户上的 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/