LinqtoSQL filtra y ordena por sintaxis.
-
03-07-2019 - |
Pregunta
My Techie Bretheren (y Sisteren, por supuesto!),
Tengo un modelo de datos LinqToSql que tiene las siguientes entidades: modelo de datos http://danimal.acsysinteractive.com/images/advisor.jpg
Necesito recuperar todos los asesores para una oficina específica, ordenados por su secuencia dentro de la oficina. Tengo la primera parte trabajando con una unión:
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;
}
Sin embargo, parece que no puedo envolver mi cerebro cansado alrededor del orden por cláusula. ¿Alguien puede dar algunas sugerencias?
Solución
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;
Otros consejos
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: Actualmente no puedo probar esto en Visual Studio, pero debería funcionar.
Puedes agregar una orden por una cláusula como esta:
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;
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow