Filtro LinqtoSQL e ordine per sintassi
-
03-07-2019 - |
Domanda
My Techie Bretheren (e Sisteren, ovviamente!),
Ho un modello di dati LinqToSql che ha le seguenti entità: modello di dati http://danimal.acsysinteractive.com/images/advisor.jpg
Devo recuperare tutti i consulenti per un ufficio specifico, ordinati in base alla loro sequenza all'interno dell'ufficio. Ho la prima parte che lavora con un join:
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;
}
Tuttavia, non riesco a avvolgere il mio cervello stanco attorno alla clausola order by. Qualcuno può dare alcuni suggerimenti?
Soluzione
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;
Altri suggerimenti
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;
}
Nota: non sono attualmente in grado di testarlo su Visual Studio ma dovrei funzionare.
Puoi aggiungere un ordine per clausola come questo:
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;
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow