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

我有这个列表视图(工作正常),我想找到一种按特定顺序填充它的有效方法,即按日期、按身份等。

我知道我可以使用 linq,但据我所知,这是低效的。如果 m_batchs 是一个很大的对象列表,那么我将多次循环遍历这个列表(因为 linq 在幕后循环遍历对象集合)。

有任何想法吗?

4

1 回答 1

0

LINQ 总体上不是低效的,但几乎总是更容易阅读,并且可以更快地实现、更改和扩展。此外,如果一种方法在 1000 次迭代中快 1 毫秒,这真的很重要吗?

所以我假设这Batch是一个自定义类型并且m_BatchsList<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 回答