此linq查询的等效lambda语法是什么?
Dim query = From t In _rdsqlconn.Tags Where t.TagWord = tag
Join p In _rdsqlconn.Posts On t.PostId Equals p.PostId Order By p.PostDatePublished
Descending Select p Where p.PostIsPublished = True
答案 0 :(得分:2)
您可以使用连接执行此操作,如下所示:
_rdsqlconn.Tags
.Where(t => t.TagWord == tag)
.Join(_rdsqlconn.Posts, t => t.PostId, p => p.PostId, (t, p) => p)
.Where(p => p.PostIsPublished == true)
.OrderByDescending(p => p.PostDatePublished)
但想要做的是在LINQ-to-SQL设计器中正确映射表和关系,然后你可以使用
_rdsqlconn.Posts.Where(p => p.PostIsPublished && p.Tags.Any(t => t.TagWord == tag))
.OrderByDescending(p => p.PostDatePublished)
如果您的数据库中的帖子和标签之间有外键,那么您将能够执行此操作。这是更清晰的代码,并删除不必要的Join运算符。