2013-03-26 2 views
1

Я пытаюсь сортировать список по названию компании. Я пробовал следующий код, но это сортирует список по CompID, а не CoShort. Как мне изменить это для сортировки CoShort?'Сортировать по' игнорируется в запросе LINQ

Public Shared Function [SelectCompanyData](iElement() As Integer) As List(Of CompanyList) 

    Dim db As New EntryDataContext() 

    Dim q As IQueryable(Of CompanyList) = (From Act_Sub_Manfu_Link In db.Act_Sub_Manfu_Links _ 
      Join Company In db.Companies _ 
      On Act_Sub_Manfu_Link.CompID Equals Company.CompID _ 
      Where iElement.Contains(Act_Sub_Manfu_Link.ACCN) _ 
      And Company.In_Dir _ 
      Select New CompanyList With { _ 
       .CompID = Company.CompID, _ 
       .InDir = Company.In_Dir, _ 
       .CoShort = Company.CoShort _ 
       }).Distinct 

    q.OrderBy(Function(c) c.CoShort) 

    Dim list As List(Of CompanyList) = q.ToList 

    Return list 

End Function 

ответ

6

Вы должны назначить упорядоченную коллекцию в переменную:

Dim oq As IOrderedQueryable(Of CompanyList) = q.OrderBy(Function(c) c.CoShort) 

И использовать его, чтобы получить список результатов поиска:

Dim list As List(Of CompanyList) = oq.ToList() 
1

Не нужно быть отнесены ни к чему, кроме возвращаемое значение

Public Function SelectCompanyData(iElement() As Integer) As List(Of CompanyList) 
    Dim db As New EntryDataContext() 
    Return (From Act_Sub_Manfu_Link In db.Act_Sub_Manfu_Links _ 
      Join Company In db.Companies _ 
      On Act_Sub_Manfu_Link.CompID Equals Company.CompID _ 
      Where iElement.Contains(Act_Sub_Manfu_Link.ACCN) _ 
      And Company.In_Dir _ 
      Select New CompanyList With { _ 
       .CompID = Company.CompID, _ 
       .InDir = Company.In_Dir, _ 
       .CoShort = Company.CoShort _ 
       }).Distinct().OrderBy(Function(c) c.CoShort).ToList() 
End Function 
+0

Спасибо, это также wo RKS. Прежде всего, я попытался поставить orderby после предложения where, но это не сработало. Это потому, что я должен иметь порядок после отдельных? –

+0

Вы имеете в виду, что у вас был 'Order By Company.CoShort' после предложения' Where'? Наличие 'OrderBy' после' Distinct' не имеет значения – djv

+0

Да У меня был заказ By Company.CoShort между Where и Select, но при этом список, отсортированный по CompID. Btw, как вы получаете Где и т. Д. Появляться в сером? –

Смежные вопросы