Vb.net ';订购人';在LINQ查询中被忽略

Vb.net ';订购人';在LINQ查询中被忽略,vb.net,linq,sql-order-by,Vb.net,Linq,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) = (

我正试图按公司名称对一份名单进行排序。我尝试了以下代码,但这是按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

必须将有序集合分配到变量中:

Dim oq As IOrderedQueryable(Of CompanyList) = q.OrderBy(Function(c) c.CoShort)
并使用它获取结果列表:

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

必须将有序集合分配到变量中:

Dim oq As IOrderedQueryable(Of CompanyList) = q.OrderBy(Function(c) c.CoShort)
并使用它获取结果列表:

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

除了返回值之外,不需要为任何对象赋值

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

除了返回值之外,不需要为任何对象赋值

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

谢谢,这也行。首先,我尝试将orderby放在where子句之后,但没有成功。那是因为我必须在distinct后面有orderby吗?你是说在Where子句后面有
按公司排序的CoShort
?在
Distinct
之后使用
OrderBy
应该不重要。我的OrderBy Company.CoShort在Where和Select之间,但是这样做列表只是按CompID排序。顺便问一句,你是如何让等以灰色显示的?你应该能够交换和混合这些LINQ和IEnumerable扩展方法,所以我不清楚为什么它不起作用。也许你有重复的c.CoShort,在使用Distinct之前被任意排序。谢谢,这也有效。首先,我尝试将orderby放在where子句之后,但没有成功。那是因为我必须在distinct后面有orderby吗?你是说在Where子句后面有
按公司排序的CoShort
?在
Distinct
之后使用
OrderBy
应该不重要。我的OrderBy Company.CoShort在Where和Select之间,但是这样做列表只是按CompID排序。顺便问一句,你是如何让等以灰色显示的?你应该能够交换和混合这些LINQ和IEnumerable扩展方法,所以我不清楚为什么它不起作用。也许你有重复的c.CoShort,在使用Distinct之前被任意排序。