1

次のクエリを使用して

 Dim allEvents As New List(Of Events)
 Dim digits = "1 2 3 4 5 6 7 8 9 0".Split()
 Dim results = (From t In ctx.events
                           Where t.date = todaysdate.Date AndAlso
                           Not digits.Any(Function(d) (t.symbol.Contains(d)))
                           Order By t.time
                           Select New With {
                                  t.symbol,
                                  t.date, t.time,
                                  t.description,
                                  t.domestic_call_num,
                                  t.web_url})

             If results.Count > 0 Then
                For x As Integer = 0 To results.Count - 1
                    Dim newevent As New Events
                    With newevent
                        .CompanySymbol = results(x).symbol
                        .EventDate = results(x).date
                        .EventTime = Left(results(x).time.ToString(), 5)
                        .EventDescription = results(x).description
                        If results(x).domestic_call_num IsNot Nothing Then
                            .DialInNumber = results(x).domestic_call_num
                        Else
                            .DialInNumber = ""
                        End If
                        If results(x).web_url IsNot Nothing Then
                            .WebCastUrl = results(x).web_url
                        Else
                            .WebCastUrl = ""
                        End If
                    End With
                    allEvents.Add(newevent)
                Next
                Return allEvents

必要な結果が得られましたが、説明と時間でさらに並べ替えたい

私は次のことを試しましたが、うまくいったはずです

 Dim results = (From t In ctx.events
                           Where t.date = todaysdate.Date AndAlso
                           Not digits.Any(Function(d) (t.symbol.Contains(d)))
                           Order By t.time
                           Group By t.description
                           Select New With {
                                  t.symbol,
                                  t.date, t.time,
                                  t.description,
                                  t.domestic_call_num,
                                  t.web_url})

コンパイラが気に入らなかった ThenBy も試しました。これを達成する方法についての助けをいただければ幸いです。基本的に、時間、説明、記号の順に並べ替えたいと思います。

4

2 に答える 2

2

統合構文を使用する場合は、次のように記述します。

Order By t.time, t.description
Select New With {
     ...

詳細については、ThenBy のクエリ式の例を参照してください。

于 2013-06-26T17:26:19.683 に答える
1

次のように、クエリの最後でアイテムを並べ替えることができます。

 Dim results = (From t In ctx.events
                       Where t.date = todaysdate.Date AndAlso
                       Not digits.Any(Function(d) (t.symbol.Contains(d)))
                       Select New With {
                              t.symbol,
                              t.date, t.time,
                              t.description,
                              t.domestic_call_num,
                              t.web_url}).OrderBy(Function(r) r.time)
                                         .ThenBy(Function(r) r.description)

クエリで実行する方がおそらく高速です。

于 2013-06-26T17:33:32.293 に答える