我一直在阅读关于使用LINQ而不是使用每个循环的性能的公平性,并且从我理解的使用LINQ查询会稍微慢一点,但通常为了方便和表现力而值得。然而,如果你在for循环中使用查询的结果,我感到有点困惑。我应该使用LINQ进行此查询吗?
假设我有一个名为'Locations'的集合和一个名为'Items'的对象集合。每个“项目”只能属于一个“地点”。我想链接相同位置下的项目。如果我要做到这一点使用正常“对于每个”循环将是这样的:
For Each it as Item in Items
If it.Location.equals(Me.Location)
Me.LinkedItems.Add(it)
End If
Next
但是如果我是使用LINQ它反而会是这样的:
For Each it as Item in Items.Where(Function(i) i.Location.equals(Me.Location))
Me.LinkedItems.Add(it)
Next
现在我的问题是,第二个(LINQ)选项是否会遍历整个'Items'集以完成查询,然后循环遍历结果以将它们添加到列表中,导致基本上是两个循环,或者它会执行一个循环循环像第一个(For Each)选项?如果答案是前者,那么我认为在这种情况下使用LINQ会很愚蠢。
不公平!我首先发现它! ;) – RCIX 2009-09-04 06:27:46
太棒了,正是我在寻找的感谢! – link664 2009-09-04 06:31:43