如何将这个带有Join的Linq查询写成Lambda?

时间:2014-07-24 01:01:36

标签: vb.net lambda entity-framework-6

我正在尝试学习如何作为lambdas进行连接,并且我有这个linq查询,但无法弄清楚如何将其作为lambda

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。我也试图将所有内容都放入viewmodel中。

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 个答案:

答案 0 :(得分:4)

这部分看起来很奇怪(打算或拼写错误?):

....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)