0
    If Not m_Batchs Is Nothing Then
        For Each Batch In m_Batchs
            newListItem = lstWsJobs.Items.Add(Batch.Id.ToString)
            With newListItem
                .Name = Batch.Id.ToString()
                .SubItems.Add(Batch.JobId.ToString)
                .SubItems.Add(Batch.Complete.ToString)
                .SubItems.Add(Batch.User)
                .SubItems.Add(Batch.Time.ToString)
            End With
        Next
    End If

私はこのリストビュー(正常に機能しています)を持っており、特定の順序で、つまり日付、IDなどでデータを入力する効率的な方法を見つけたいと思っています。

linqを使用できることは知っていますが、理解しているように、これは非効率的です。m_batchsがオブジェクトの大きなリストである場合、私はこのリストを何度もループします(舞台裏のlinqがオブジェクトコレクションをループするため)。

何か案は?

4

1 に答える 1

0

LINQは一般的に非効率的ではありませんが、ほとんどの場合、読みやすく、実装、変更、拡張が高速です。また、1つのアプローチが1000回の反復で1ミリ秒速いかどうかは本当に重要ですか?

Batchだから私はそれがカスタムタイプでm_Batchsあり、List<Batch>:であると仮定します

// order by date 
var query = m_Batchs.OrderBy(b => b.Time);
// order by identity 
query = m_Batchs.OrderBy(b => b.ID);
// ...

この単純なLINQクエリとカスタム実装の違いを測定します。

編集:申し訳ありませんが、それはC#でした

Dim batchByTime = m_Batchs.OrderBy(Function(b) b.Time);
Dim batchByID = m_Batchs.OrderBy(Function(b) b.ID);
于 2012-04-18T10:13:31.743 に答える