LinqToSQL 필터 및 구문 별 주문
-
03-07-2019 - |
문제
내 기술자 Bretheren (물론 자매!),
다음 엔티티가있는 LinqToSQL 데이터 모델이 있습니다.데이터 모델 http://danimal.acsysinteractive.com/images/advisor.jpg
사무실 내에서 순서대로 주문한 특정 사무실의 모든 고문을 검색해야합니다. 나는 첫 번째 부분이 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;
}
그러나 나는 절차에 의한 질서에 대한 지친 뇌를 절단에 의해 포장 할 수없는 것 같다. 누구든지 제안을 할 수 있습니까?
해결책
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;
다른 팁
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;
}
메모: 현재 Visual Studio에서 이것을 테스트 할 수는 없지만 작동해야합니다.
다음과 같은 절로 주문을 추가 할 수 있습니다.
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;
제휴하지 않습니다 StackOverflow