Frage

Ich versuche, herauszufinden, wie mein Kind-Datensatz zu begrenzen, um nur aktive Datensätze umfasst ...

    // Here's what I have currently...
    m_BackLoggerEntities.Stories
     .Include("Sprints")
     .Include("Tasks")
     .Include("Efforts")
     .Include("Products")
     .First(s => s.StoryId == id);


    // Here's what I thought I could do...
    m_BackLoggerEntities.Stories
     .Include("Sprints")
     .Include("Tasks")
     .Include("Efforts")
     .Include("Products")
     .Where(s => s.Tasks.Active)
     .First(s => s.StoryId == id);


    // I also tried this...
    m_BackLoggerEntities.Stories
     .Include("Sprints")
     .Include("Tasks")
     .Include("Efforts")
     .Include("Products")
     .First(s => s.StoryId == id && s => s.Tasks.Active));

Natürlich keiner von ihnen arbeiten. Ich bin mir nicht sicher, wie sonst, dies zu tun ...

War es hilfreich?

Lösung

Werfen Sie einen Blick auf Alex James Tipp 37 . Gemäß Beispiel in verlinkte Artikel, kann es wie folgt geschehen:

var query = from story in m_BackLoggerEntities.Stories
            where story.StoryId == id
            select new {
                          story,
                          Tasks = from task in story.Tasks
                                  where task.Active
                                  select task
                       };

var stories = query
   .AsEnumerable()
   .Select(x => x.Story);

Jede Geschichte innerhalb von „Geschichten“ sollte nur dann aktiv Aufgaben hat.

Andere Tipps

Sie brauchen so etwas wie folgt aus:

Model = m_BackLoggerEntities.Stories
    .Include("Sprints")
    .Include("Tasks")
    .Include("Efforts")
    .Include("Products")
    .SingleOrDefault(s => s.StoryId == id);

Dann in Ihrer Ansicht:

@foreach (var task in Model.Tasks.Where(t => t.Active))

Die einzige Möglichkeit, die ich gefunden habe, um „zu simulieren“, was ich will zu verwenden ist ...

        var storyToDetail =
            m_BackLoggerEntities.Stories
                .Include("Sprints")
                .Include("Tasks")
            .Include("Efforts")
            .Include("Products")
                .First(s => s.StoryId == id);

Dann in der foreach in der Ansicht ...

            <% foreach (var task in Model.Tasks.Where(t => t.Active))

Aber das bringt natürlich viel mehr Datensätze zurück dann will ich.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top