2013-03-27 14 views
5

mam tej struktury tabeli: Two tables and a lookup tableW zapytaniu LINQ sposób zamawiania za pomocą dołączonej kolumny tabeli za pomocą .Include()?

mam tej kwerendy LINQ:

var query = (from p in context.People.Include("PeopleClub").Include("PeopleClub.Club") 
      orderby p.Name 
      select p).ToList(); 

jest to możliwe do zrobienia czegoś takiego:

var query = (from p in context.People 
           .Include("PeopleClub") 
           .Include("PeopleClub.Club") 
      orderby p.Name, p.PeopleClub.DisplaySequence 
      select p).ToList(); 

UPDATE: Korzystanie z Entity Framework 4.0

Aktualizacja 2: Poddaję się. Zobacz this similar question dla innego podejścia. W końcu przerobiłem moje zapytanie bez .Include().

+0

Czy próbowałeś? Czy to nie działa? – abatishchev

+0

Czy zmapowano właściwość nawigacji? – abatishchev

+0

p.PeopleClub jest ważny, ale nie mogę uzyskać dostępu do żadnej z kolumn w p.PeopleClub. To jest błąd, gdy próbuję: "System.Data.Objects.DataClasses.EntityCollection " nie zawiera definicji "DisplaySequence" ani metody rozszerzenia "DisplaySequence" akceptującej pierwszy argument typu "System.Data.Objects.DataClasses.EntityCollection " można znaleźć (czy brakuje instrukcji użycia lub odniesienia do zestawu?) – scw

Odpowiedz

2

Spróbuj przez właściwości nawigacyjnych:

using System.Data.Entity;         // notice using 

var q = from p in context.People 
          .Include(p => p.PeopleClub)  // notice lambda instead of string 
          .Include(p => p.PeopleClub.Club) // you may not need that though 
     orderby p.FirstName, p.ClubPerson.DisplaySequence 
     select p; 

lub regularne dołączyć:

var q = from p in db.People 
     join pc in db.PeopleClub on p.PersonID equals pc.PersonID 
     join c in db.Clubs on pc.ClubID equals c.ClubID 
     orderby p.FirstName, pc.DisplaySequence 
     select p; 
+0

. Incclude oczekuje ciągu znaków, więc nie pozwoli mi tego zrobić. – scw

+0

@scw: jeśli dodasz przestrzeń nazw poniżej kompilator znajdzie metodę rozszerzenia akceptującą lambdę. – abatishchev

+0

Dochód? Co powiesz na komentarz? – abatishchev