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循环遍历对象集合)。
有什么想法吗?
答案 0 :(得分:0)
LINQ一般效率不高,但几乎总是更容易阅读,更快实现,更改和扩展。另外,如果一种方法在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);