LinqtoSQL过滤器和语法顺序
时间:2020-03-06 14:56:45 来源:igfitidea点击:
我的Techie Bretheren(当然还有Sisteren!),
我有一个具有以下实体的LinqToSql数据模型:
数据模型http://danimal.acsysinteractive.com/images/advisor.jpg
我需要检索特定办公室的所有顾问,并按他们在办公室中的顺序排序。我已经有了与联接一起工作的第一部分:
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; }
但是,我似乎无法将我的疲倦的大脑包裹在order by子句的周围。任何人都可以提出一些建议吗?
解决方案
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上对此进行测试,但应该可以使用。
我们可以像这样添加order by子句:
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;