Entity Framework Inclure, avec la condition

J'ai besoin de filtrer un courtier basé sur l'id et le incomplète archivages

D'abord, il est retourné au revendeur basé uniquement sur id:

    //TODO: limit checkins to those that are not complete
    return this.ObjectContext.Dealers
        .Include("Groups")
        .Include("Groups.Items")
        .Include("Groups.Items.Observations")
        .Include("Groups.Items.Recommendations")
        .Include("Checkins")
        .Include("Checkins.Inspections")
        .Include("Checkins.Inspections.InspectionItems")
        .Where(d => d.DealerId == id)
        .FirstOrDefault();

Comme vous pouvez le voir, la condition est à la limite de la archivages.
Voici ce que j'ai fait:

var query = from d in this.ObjectContext.Dealers
                            .Include("Groups")
                            .Include("Groups.Items")
                            .Include("Groups.Items.Observations")
                            .Include("Groups.Items.Recommendations")
                            .Include("Checkins.Inspections")
                            .Include("Checkins.Inspections.InspectionItems")
                            .Where(d => d.DealerId == id)
                        select new
                        {
                            Dealer = d,
                            Groups = from g in d.Groups
                                     select new
                                     {
                                         Items = from i in g.Items
                                                 select new
                                                 {
                                                     Group = i.Group,
                                                     Observations = i.Observations,
                                                     Recommendations = i.Recommendations
                                                 }
                                     },
                            Checkins = from c in d.Checkins
                                       where c.Complete == true
                                       select new
                                       {
                                           Inspections = from i in c.Inspections
                                                         select new
                                                         {
                                                             InspectionItems = i.InspectionItems
                                                         }
                                       }

                        };

            var dealer = query.ToArray().Select(o => o.Dealer).First();

            return dealer;

Il fonctionne.
Cependant, je ne suis pas convaincu que je suis en train de faire la bonne chose.

Quelle est la meilleure façon d'accomplir ce que j'ai fait? Une procédure stockée peut-être?

Je ne suis pas sûr, j'ai même l'utilisation Inclure la clause plus

Merci.

OriginalL'auteur Andrei N. | 2011-07-14