我正在尝试将其写为LINQ,
原始代码:
For Each CurrentForm As Form In MyForms
AddLink(CurrentForm.GetLink())
Next
我是LINQ的初学者,到目前为止,我不太确定在哪里使用,哪些不在。如果在这种情况下LINQ会给你带来更大的伤害,那么请随时给我发火焰。
编辑:您可以假设AddLink()存在重载,其中包含IEnumerable
答案 0 :(得分:3)
除非AddLink过载需要集合,否则LINQ将无法避免循环。
是否存在类似的过载:
AddLinks(MyForms.Select(f => f.GetLink())
会这样做。
上述表达式的工作原理(简要说明):
有很多事情要发生,这是LINQ的优点之一,它是一种表达数据操作的紧凑方式,没有显式循环和临时变量的通常开销。
答案 1 :(得分:2)
这里没有火焰,但LINQ在这里不会有任何帮助。如果LINQ有一个ForEach
方法(正如previous question中讨论的那样,那么你可以使用它) - 但它没有内置到LINQ中,在这种情况下并没有真正的似乎很有用。
当然,它完全取决于AddLink
的作用 - 如果它添加了一个列表链接,你可以改为使用(比方说)List.AddRange
,那么你可以使用LINQ。但是这段代码看起来非常简单易读,所以在这种情况下我不会担心。