C# 使用内部select将Sql转换为Linq
如何将此Sql查询转换为LinQ 挑选* 从…起 使用者 加入产品 ON users.id=products.user\u id users.id在何处 选择id 来自用户 其中users.status='Online'C# 使用内部select将Sql转换为Linq,c#,linq,C#,Linq,如何将此Sql查询转换为LinQ 挑选* 从…起 使用者 加入产品 ON users.id=products.user\u id users.id在何处 选择id 来自用户 其中users.status='Online' 好吧,你的sql太复杂了,子查询是无用的,所以简化它,你会得到一个简单的linq from u in users join p in products on u.id equals p.user_id where u.status == "Online" select new{
好吧,你的sql太复杂了,子查询是无用的,所以简化它,你会得到一个简单的linq
from u in users
join p in products on u.id equals p.user_id
where u.status == "Online"
select new{u, p};
您的sql可能只是
select *
from users u
join products p on u.id = p.user_id
where u.status = 'Online'
您根本不需要内部选择
SELECT *
FROM
users
JOIN products
ON users.id = products.user_id
WHERE
users.status = 'Online'
现在,将其转换为LINQ查询是小菜一碟
注意:如果要查询另一个表,则需要一个带有嵌套SELECT的IN子句,该表在联接时将产生更多的输出行,因为它与查询中已包含的一个表具有1:n关系。我假设您具有以下实体:
class User {
public int Id { get; set; }
public string Status { get; set; }
public IList<Product> Products { get; set; }
}
class Product {
public int Id { get; set; }
public int UserId { get; set; }
public User User { get; set; }
}
谢谢,但我假设查询是这样的,以了解如何处理内部选择
var result =
from user in users
join product in products on user.Id equals product.UserId
where user.Status == "online"
select new { user, product };