按特定顺序将项目添加到列表视图

时间:2012-04-18 09:55:40

标签: vb.net listview

    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循环遍历对象集合)。

有什么想法吗?

1 个答案:

答案 0 :(得分: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);