这个带有 Join 的 Linq 查询如何写成 Lambda?
Posted
技术标签:
【中文标题】这个带有 Join 的 Linq 查询如何写成 Lambda?【英文标题】:How would this Linq query with Join be written as a Lambda? 【发布时间】:2014-09-15 09:45:55 【问题描述】:我正在尝试学习如何将连接作为 lambdas 进行,我有这个 linq 查询,但无法弄清楚如何将其作为 lambdas 进行
From posts In db.be_Posts Join t In db.be_PostTag On posts.PostID
Equals t.PostID Where t.Tag = tag Select posts.Title
上面的 Join 在 LinqPad 中工作。到目前为止,这就是我所拥有的 lambda。我也在尝试将所有内容都放入视图模型中。
db.be_Posts.OrderByDescending(Function(x) x.DateCreated).Join(db.be_PostTag,
Function(p) p.PostID, Function(t) t.PostID, Function(p, t).Select(Function(p1)
New be_PostsViewModel
With .Id =
当我输入 p、p1 或 t 时,.Id
之后没有智能感知。我究竟做错了什么?谢谢
【问题讨论】:
【参考方案1】:这部分看起来很奇怪(有意还是错字?):
....Function(p, t).Select(Function(p1)...
据我所知,这样的事情应该可以工作:
db.be_Posts.
OrderByDescending(Function(x) x.DateCreated).
Join(db.be_PostTag, _
Function(p) p.PostID, _
Function(t) t.PostID, _
Function(p, t) New be_PostsViewModel With
.Id = p.PostID,
....
....
)
您的 LINQ 查询语法可以翻译成这样的方法语法:
db.be_Posts.
Join(db.be_PostTag, _
Function(p) p.PostID, _
Function(t) t.PostID, _
Function(p, t) p.Title)
【讨论】:
以上是关于这个带有 Join 的 Linq 查询如何写成 Lambda?的主要内容,如果未能解决你的问题,请参考以下文章
带有 WHERE 子句的 SQL INNER JOIN 到 LINQ 格式
Linq-to-Entities:带有 WHERE 子句和投影的 LEFT OUTER JOIN
如何将带有 LEFT JOIN 的 SQL 转换为 EF CORE 3 LINQ
如何将 Sql 查询转换为 Linq 及其在 Entity Framework Core 中的 Join() 方法的等价物