使用Linq获取具有特定外键的记录

时间:2015-07-14 23:58:26

标签: c# asp.net-mvc linq

我正在尝试从具有特定外键的表中获取所有记录,但我很难让linq返回任何有用的内容。

发布模型

public class Post
{
    //... irrelevant properties
    [ForeignKey("Category")]
    public int CategoryId;
    public virtual Category Category { get; set; }
}

我的dbo.Posts表

enter image description here

我尝试了什么

我尝试了以下几种变体:

//id = 7

using (UnitOfWork uwork = new UnitOfWork())
{
    var post = uwork.PostRepository.GetAll().Where(c => c.CategoryId == id);

}

这只返回“非公开成员”,它不包含任何有用的内容。

enter image description here

问题

如何修改我的linq查询以返回具有特定外键ID的所有帖子?

更新

here's my repository

1 个答案:

答案 0 :(得分:3)

您似乎基本上在查看DbQuery<T>对象,这是IQueryable<T>的实现。基本上LINQ还没有进行查询,因为没有人问它数据。因此,它会收集有关对象中查询的所有信息,以便在以后需要时执行。

要强制它为您提供实际数据,只需执行ToList,或迭代帖子或任何内容:

var post = uwork.PostRepository.GetAll().Where(c => c.CategoryId == id).ToList();

确保在之前公开db上下文对象。