LinqtoSQLフィルターと構文による順序
-
03-07-2019 - |
質問
私の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;
所属していません StackOverflow