gpt4 book ai didi

c# - Linq 查询 - 多个连接到一个表

转载 作者:太空宇宙 更新时间:2023-11-03 14:59:45 27 4
gpt4 key购买 nike

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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com