0

includeステートメントを使用するときにlinqで「納屋のドアが開いている」というステータス名を選択するにはどうすればよいですか?

// 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 には、barnid との外部キー関係を持つ Status.StatusName フィールドもあります。また、「納屋のドアが開いている」と「納屋のドアが閉じている」という 2 つのステータス名と、ステータスが発生した日付フィールドと id フィールドがあります。家畜を追加できるのは、納屋のドアが開いているときだけです。

納屋ごとに複数のステータスが存在する可能性があるため、これが正しい考えかどうかはわかりません。

StatusName が「納屋のドアが開いています」である日付までに発生した最後のステータスである納屋のみを一覧表示するにはどうすればよいですか?

.FirstDefault を追加しようとしましたが、最初の納屋だけでなく、「納屋のドアが開いています」を含むすべての納屋が必要です。

4

2 に答える 2

1

これをお探しですか...?:

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

于 2013-08-12T19:19:17.103 に答える