gpt4 book ai didi

LINQ - 加入 OR 条件

转载 作者:行者123 更新时间:2023-12-04 19:13:35 25 4
gpt4 key购买 nike

我有两个实体,用户和友谊,它们看起来像:

    public class User
{
public int UserId { get; set; }
(...)
}

public class Friendship
{
public int SenderId { get; set; }
public int ReceiverId { get; set; }
(...)
}

我想创建一个简单的查询,在 SQL 中看起来像:
    SELECT * FROM Users as U
INNER JOIN Friendships as F ON U.UserId = F.ReceiverId OR U.UserId = F.SenderId
Where U.Nick != VARIABLE

换句话说,我想选择用户的所有 friend 。

而我无法做到这一点。我找到了一个解决方案,其中一个使用联合创建两个单独的连接查询并且它有效 - 但创建这样的查询到 db 效率不高。

最佳答案

LINQ 中的联接始终是等值联接。基本上你需要多个 from条款和 where条款:

var query = from u in db.Users
where u.Nick != variable
from f in db.Friendships
where u.UserId == f.ReceiveId || u.UserId == f.SenderId
select ...;

现在在 LINQ to Objects 中,可能有更有效的方法来执行此操作 - 但我希望基于 SQL 的 LINQ 提供程序生成一个具有足够好的执行计划的查询。它实际上可能不会在 SQL 中创建 JOIN,但我希望它与您显示的连接具有相同的执行计划。

关于LINQ - 加入 OR 条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12610472/

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