Question

Mon technicien Bretheren (et Sisteren, bien sûr!),

J'ai un modèle de données LinqToSql qui comporte les entités suivantes: modèle de données http://danimal.acsysinteractive.com/images/advisor.jpg

Je dois récupérer tous les conseillers d'un bureau spécifique, classés par ordre chronologique au sein du bureau. La première partie fonctionne avec une jointure:

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;
}

Cependant, je n'arrive pas à envelopper mon cerveau fatigué autour de la clause d'ordre par. Quelqu'un peut-il donner des suggestions?

Était-ce utile?

La solution

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;

Autres conseils

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;
}

Remarque: je ne suis pas en mesure de le tester actuellement sur Visual Studio, mais cela devrait fonctionner.

Vous pouvez ajouter une clause order by comme ceci:

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;
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top