dot*_*NET 4 c# linq vb.net lambda
这是公平的在多个链式调用中使用单个lambda表达式变量吗?例如:
MyList.Where(i => i.ID > 20).OrderBy(i => i.Name);
Run Code Online (Sandbox Code Playgroud)
那么i
用于Where()
保持独立于i
使用中OrderBy()
还是会彼此产生一些隐藏的副作用,所以我必须为每个使用不同的变量?另外,你的答案也适用于VB.NET吗?
我问这个是因为我在一个稍微不同的上下文中读到我不应该直接在LINQ查询中使用foreach变量,而是在循环中创建变量的本地副本.上面的代码中是否也隐藏了一些类似的效果?
他们是完全独立的.实际上,每次声明一个lambda时,你都声明了范围变量,这些变量是这个labda表达式的局部变量.因此,i
在Where(i => i.ID > 20)
从完全不同i
的OrderBy(i => i.Name)
.在第一种情况下i
指的是随机元件MyList
,然后i
是指来自该序列的随机元素Where
子句,这将是所有的要素的序列MyList
具有一个ID>20
.
归档时间: |
|
查看次数: |
879 次 |
最近记录: |