LINQ:使用DB与关系的问题

时间:2011-07-30 20:43:26

标签: c# asp.net linq linq-to-sql asp.net-mvc-3

我不知道如何将帖子返回到我的视图,其中的标签与传递给控制器​​操作的标签相同。
我认为有一些聪明而简单的方法可以做到这一点,但我对LINQ和SQL很新。 DB

代码

// id = tag name, not it's id
public ActionResult Tag(string id)
{
    // I get all the PostTags where PostTags.Tag.Name = id
    var postTags = _db.PostTags.Where(x => x.Tag.Name == id);

    // And what I do now?
}

2 个答案:

答案 0 :(得分:3)

使用查询语法而不是扩展方法,使用关系数据中的联接更容易掌握。使用扩展方法(如.Join(...)等)可以实现以下功能,但这更接近您可能已习惯的SQL。

var postTags = from t in _db.Tags
               join pt in _db.PostTags on t.ID equals pt.TagID
               join p in _db.Posts on pt.PostID equals p.ID
               where t.Name == id
               select p;

答案 1 :(得分:0)

选择它们你可以做类似的事情......

var posts = _db.Posts.Where(post => post.PostTags.Any(postTag => postTag.Tag.Name == id));

这将只选择所有Post s,其中任何相关的PostTag都有Tag且名称已通过。