如何使用 LinQ lambda 表达式编写此查询
How to write this query using LinQ lambda expression
SELECT PropertyCommnets.commnet_content,
PropertyCommnets.commnet_date,
users.user_name,
propertycommnets.commnet_id
FROM PropertyCommnets
INNER JOIN aspnet_users
ON propertycommnets.userid = aspnet_users.userid
INNER JOIN users
ON aspnet_users.userid = users.userid
我写了这个但不正确:
from a in context.PropertyCommnets
join b in context.aspnet_Users
on a.UserId equals b.UserId
join c in context.Users
on b.UserId equals c.UserId
where a.property_id == PropertyId
select(c.user_name ).FirstOrDefault()
a) 您加入 aspnet_users 有什么具体原因吗?
您没有使用 aspnet_users.userid
b) 您的尝试是 Linq SQL 而不是 Lambda 表达式。
c) 您的用户模型中是否有一个虚拟的属性通信集合?如果不是,我会考虑的。然后您可以简单地调用 user.propertycommnets 和该特定用户的评论。
我不明白你最后用 select
想干什么。这不是有效的语法,并且 FirstOrDefault
与您的 sql 查询相比也不正确。
试试这个:
from a in context.PropertyCommnets
join b in context.aspnet_Users
on a.UserId equals b.UserId
join c in context.Users
on b.UserId equals c.UserId
where a.property_id == PropertyId
select new {
commnet_content = a.commnet_content,
commnet_date = a.commnet_date,
user_name = c.user_name,
commnet_id = a.commnet_id,
};
但是,这仍然是查询语法而不是 method/lambda 语法。有关系吗?使用连接查询语法更具可读性。
SELECT PropertyCommnets.commnet_content,
PropertyCommnets.commnet_date,
users.user_name,
propertycommnets.commnet_id
FROM PropertyCommnets
INNER JOIN aspnet_users
ON propertycommnets.userid = aspnet_users.userid
INNER JOIN users
ON aspnet_users.userid = users.userid
我写了这个但不正确:
from a in context.PropertyCommnets
join b in context.aspnet_Users
on a.UserId equals b.UserId
join c in context.Users
on b.UserId equals c.UserId
where a.property_id == PropertyId
select(c.user_name ).FirstOrDefault()
a) 您加入 aspnet_users 有什么具体原因吗? 您没有使用 aspnet_users.userid
b) 您的尝试是 Linq SQL 而不是 Lambda 表达式。
c) 您的用户模型中是否有一个虚拟的属性通信集合?如果不是,我会考虑的。然后您可以简单地调用 user.propertycommnets 和该特定用户的评论。
我不明白你最后用 select
想干什么。这不是有效的语法,并且 FirstOrDefault
与您的 sql 查询相比也不正确。
试试这个:
from a in context.PropertyCommnets
join b in context.aspnet_Users
on a.UserId equals b.UserId
join c in context.Users
on b.UserId equals c.UserId
where a.property_id == PropertyId
select new {
commnet_content = a.commnet_content,
commnet_date = a.commnet_date,
user_name = c.user_name,
commnet_id = a.commnet_id,
};
但是,这仍然是查询语法而不是 method/lambda 语法。有关系吗?使用连接查询语法更具可读性。