LinqToSql фильтрует и упорядочивает по синтаксису

StackOverflow https://stackoverflow.com/questions/154826

  •  03-07-2019
  •  | 
  •  

Вопрос

Мои братья-технари (и Сестры, конечно же!),

У меня есть модель данных 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;
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top