LinqToSql Filter und Sortieren nach Syntax
-
03-07-2019 - |
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?
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