2013-03-26 54 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

謝謝,這也窩RKS。首先我試着在where子句後面加上orderby,但那不起作用。那是因爲我必須在不同的人之後得到命令嗎? –

+0

你的意思是你在'Where'子句後面有'Order By Company.CoShort'嗎?在'Distinct'後面有'OrderBy'應該不重要 – djv

+0

是的,我在Where和Select之間有Order by Company.CoShort,但是這樣做只是按CompID排序的列表。順便說一句,你怎麼得到哪裏等灰色出現? –