LinqtoSQL筛选器和按语法排序

LinqtoSQL筛选器和按语法排序,linq,linq-to-sql,sql-order-by,Linq,Linq To Sql,Sql Order By,当然是我的技术人员Bretheren和Sisteren 我有一个LinqToSql数据模型,它具有以下实体: 我需要检索特定办公室的所有顾问,按他们在办公室内的顺序排序。我有一个连接的第一部分: public static List<Advisor>GetOfficeEmployees(int OfficeID) { List<Advisor> lstAdvisors = null; using (AdvisorDataModelDataContext

当然是我的技术人员Bretheren和Sisteren

我有一个LinqToSql数据模型,它具有以下实体:

我需要检索特定办公室的所有顾问,按他们在办公室内的顺序排序。我有一个连接的第一部分:

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;
}
然而,我似乎无法用疲惫的头脑来思考ORDERBY条款。有人能给点建议吗

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;
注意:我目前无法在VisualStudio上测试此功能,但应该可以工作


注意:我目前无法在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;

您可以添加如下所示的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;

没有必要对结果进行分组。事实上,这个LINQ查询的结果将是一个IEnumerable,因此不会编译。不需要对结果进行分组。事实上,这个LINQ查询的结果将是一个IEnumerable,因此它不会编译。这似乎是一种奇怪的方式来连接那些任何和第一次调用。即使它工作正常,也可能会在SQL转换中创建不必要的子查询。为什么不使用join子句,或者使用两个from子句和where子句将它们连接在一起?OO brain希望使用Advisor对象及其属性。数据大脑希望把所有的数据连接在一起,并在最后对类型进行分类。这似乎是一种奇怪的方式来连接任何和第一次调用。即使它工作正常,也可能会在SQL转换中创建不必要的子查询。为什么不使用join子句,或者使用两个from子句和where子句将它们连接在一起?OO brain希望使用Advisor对象及其属性。“数据大脑”希望将所有数据连接在一起,并在最后对类型进行分类。