Asp.net mvc 4 使用实体框架5从MVC4中包含的几个实体中选择状态

Asp.net mvc 4 使用实体框架5从MVC4中包含的几个实体中选择状态,asp.net-mvc-4,entity-framework-5,Asp.net Mvc 4,Entity Framework 5,在使用include语句时,如何在linq中选择“barn doors open”的状态名称 // GET: /Cowbow/Farm/ public ActionResult IndexNew() { var barns = dbFarm.Barn.Include(b => b.Dog).Include(b => b.Cat).Include(b => b.Pig).Include(b => b.Cow).Include(b => b.Chicken).I

在使用include语句时,如何在linq中选择“barn doors open”的状态名称

// GET: /Cowbow/Farm/
public ActionResult IndexNew()
{
    var barns = dbFarm.Barn.Include(b => b.Dog).Include(b => b.Cat).Include(b => b.Pig).Include(b => b.Cow).Include(b => b.Chicken).Include(b => b.Feed);
    // return View(barns.ToList()); // normal scaffold generated return
 return View(barns.Where(b => b.Statuses.Where(s => s.statusName == "barn doors open")).AsEnumerable().ToList());

}
Barn还有一个Status.StatusName字段,该字段与barnid具有外键关系。它还具有两个可能的状态名称,“谷仓门打开”和“谷仓门关闭”,以及状态发生的日期字段和id字段。我只能在谷仓门打开时添加农场动物

不确定这是否正确,因为每个谷仓可能有多个状态

如何仅列出在日期前出现的最后一个状态为“谷仓门打开”的谷仓


我试图添加.FirstDefault,但我希望所有包含“打开谷仓门”的谷仓,而不仅仅是第一个谷仓。

如果我正确理解您的意思,在某个特定时刻,您的谷仓可能只有一个状态(打开或关闭)。所以你不需要多对多的关系。只要写下:

return View(barns.Where(a => a.Status.statusName == "barn doors open").AsEnumerable().ToList());

你在找这个…?:

return View(barns
    .Where(b => b.Statuses
        .Where(s => s.statusName == "barn doors open" && 
            s.TimeStap == b.Statuses.Max(st => st.TimeStamp))
    .AsEnumerable().ToList());

您也不需要调用
.AsEnumerable()

返回视图(barns.Where(b=>b.Statuses.Contains(newstatus{StatusName=“barn doors open”})).ToList();因为我想用一个日期戳来记录谷仓门每次打开或关闭的时间。@cyberslue@Ok。我不能评论,因为我以前从未使用过这种方法。如果有效,请告诉我:)在任何给定的时刻,谷仓都只有一种状态。但我想用日期时间戳将所有状态更改存储在仓库中。。。?什么是
账户
以及它在哪里使用…?您不应该看到这一点