Frage

My Techie bretheren (und Sisteren, natürlich!),

Ich habe ein LinqToSql Datenmodell, das die folgenden Einheiten aufweist: Datenmodell http://danimal.acsysinteractive.com/images/advisor.jpg

Ich brauche alle Berater für ein bestimmtes Büro abzurufen, die von ihrer Reihenfolge im Büro bestellt. Ich habe den ersten Teil mit einem Join-Arbeits bekommt:

public static List<Advisor>GetOfficeEmployees(int OfficeID)
{
    List<Advisor> lstAdvisors = null;
    using (AdvisorDataModelDataContext _context = new AdvisorDataModelDataContext())
    {
        var advisors = from adv in _context.Advisors
                       join advisoroffice in _context.OfficeAdvisors
                           on adv.AdvisorId equals advisoroffice.AdvisorId
                       where advisoroffice.OfficeId == OfficeID
                       select adv;

        lstAdvisors = advisors.ToList();

    }
    return lstAdvisors;
}

Allerdings kann ich nicht scheinen, um meine müden Gehirn um die ORDER BY-Klausel zu wickeln. Kann jemand einige Anregungen geben?

War es hilfreich?

Lösung

from adv in _context.Advisors
where adv.OfficeAdvisor.Any(off => off.OfficeId == officeID)
order adv by adv.OfficeAdvisor.First(off => off.OfficeId = officeID).Sequence
select adv;

Andere Tipps

public static List<Advisor>GetOfficeEmployees(int OfficeID)
{
    List<Advisor> lstAdvisors = null;
    using (AdvisorDataModelDataContext _context = new AdvisorDataModelDataContext())
    {
        var advisors = from adv in _context.Advisors
                       join advisoroffice in _context.OfficeAdvisors
                           on adv.AdvisorId equals advisoroffice.AdvisorId
                       where advisoroffice.OfficeId == OfficeID
                       group adv by adv.OfficeId into g
                       order by g.Sequence
                       select g;

        lstAdvisors = advisors.ToList();

    }
    return lstAdvisors;
}

Hinweis: Ich bin derzeit nicht in der Lage diese auf Visual Studio zu testen, sollte aber funktionieren

.

Sie können einen Auftrag durch Klausel wie folgt hinzu:

var advisors = from adv in _context.Advisors
                  join advisoroffice in _context.OfficeAdvisors
               on adv.AdvisorId equals advisoroffice.AdvisorId
               where advisoroffice.OfficeId == OfficeID
               orderby advisoroffice.Sequence //  < -----
               select adv;
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top