gpt4 book ai didi

c# - 多表linq查询?

转载 作者:行者123 更新时间:2023-11-30 14:55:35 25 4
gpt4 key购买 nike

你能帮我用 Linq 和 Lambda 表达式翻译这个 SQL 查询吗。

SELECT * FROM User
JOIN UserIdentifier ON User.id = UserIdentifier.user_fk
JOIN UserPassword ON User.id = UserPassword.user_fk
WHERE UserIdentifier.identifier_value = "key" AND UserPassword.password = "1234"

我已经写过了

var query = from u in context.Users
join ui in context.UserIdentifiers on u.id equals ui.user_fk into Joined
from j in Joined.DefaultIfEmpty()
join up in context.UserPasswords on u.id equals up.user_fk into Joined2
from ???
select new { id = u.id, identifier = j.identifier_value, password = Joined2.???}

http://paragy.wordpress.com/2010/11/18/multiple-joins-with-linq-and-lambda/ 的帮助下

我不是 linq 的满意用户。其实我不喜欢 linq 因为这种要求。这个很简单,但是当你尝试复杂的请求时,linq 是一场噩梦。动态请求更糟糕。我总是对 linq 语法有疑问,而网络并没有真正帮助。我找不到正确的文档来编写查询。

我想我不是第一个问这个问题的人,但我发现的所有文档似乎都是错误的或对我没有帮助。这是一个简单的查询,我找不到正确的帮助。我仍在等待有人向我证明链接不仅仅是另一个 POC。

最佳答案

您缺少一个 where 子句。

并且您的 SQL 连接是常规的 INNER JOIN,因此您不需要这些 join ... into g from x in g.DefaultIfEmpty() ->这就是您如何执行与 LEFT OUTER JOIN 等效的操作。

var query = from u in context.Users
join ui in context.UserIdentifiers on u.id equals ui.user_fk
join up in context.UserPasswords on u.id equals up.user_fk
where ui.identifier_value == "key" && up.password == "1234"
select new
{
id = u.id,
identifier = ui.identifier_value,
password = up.password
};

关于c# - 多表linq查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25073297/

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