在LINQ查询中忽略'排序依据'

Rac*_*dge 1 linq vb.net sql-order-by

我想按公司名称对列表进行排序.我尝试了以下代码,但这是按CompID排序列表而不是CoShort.我应该如何更改此按CoShort排序?

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
Run Code Online (Sandbox Code Playgroud)

Mar*_*zek 6

您必须将有序集合分配给变量:

Dim oq As IOrderedQueryable(Of CompanyList) = q.OrderBy(Function(c) c.CoShort)
Run Code Online (Sandbox Code Playgroud)

并使用它来获得结果列表:

Dim list As List(Of CompanyList) = oq.ToList()
Run Code Online (Sandbox Code Playgroud)