使用 MVC EF,我将如何按 id 以外的字段过滤结果?
return View(db.Drafts.Where(PublicationId=id));
PublicationId 是 Drafts 表中的一列。
任何帮助表示赞赏。
使用 MVC EF,我将如何按 id 以外的字段过滤结果?
return View(db.Drafts.Where(PublicationId=id));
PublicationId 是 Drafts 表中的一列。
任何帮助表示赞赏。
public ActionResult Index(int id)
{
var drafts = db.Drafts.Where(d => d.PublicationId == id).ToList();
return View(drafts);
}
或者如果你想要一个草稿(因为 id 通常是唯一的):
public ActionResult Index(int id)
{
var draft = db.Drafts.SingleOrDefault(d => d.PublicationId == id);
return View(draft);
}
我不确定您的Draft
课程是什么样的,但让我们假设它看起来像这样:
public class Draft
{
public int Id { get; set; }
public int PublicationId { get; set; }
public string Name { get; set; }
}
你可以写一个这样的查询:
return View(db.Drafts.Where(d => d.Name == "foo"));
这只会返回名称为“foo”的草稿。这本身可能没有用。您很可能希望通过将数据传递到控制器(查询字符串、表单值、路由值等)来控制它:
public ActionResult Index(int id, string filter)
{
return View(db.Drafts.Where(d => d.Name == filter));
}
或者您可以过滤多个属性:
public ActionResult Index(int id, string filter)
{
return View(db.Drafts.Where(d => d.Name == filter && d.PublicationId == id));
}
你熟悉 lambdas 吗?在 where 子句的 lambda 中,您可以指定任何您想要的属性。
return View(db.Drafts.Where(d => d.SomeProperty == value));
我还会考虑将您传递到页面的数据放入模型中,而不是使模型成为实际的 POCO 模型。MVC 模型驱动显示,POCO 模型驱动数据。