带有函数(x)的 VB.NET Linq 表达式未执行?

标签 vb.net linq

为什么这按预期工作:

list.ForEach(sub(x) x.Name = "New Name")

但这不是:
list.ForEach(function(x) x.Name = "New Name")

还有人糊涂吗?

最佳答案

当您使用 Function关键词

list.ForEach(Function(x) x.Name = "New Name")

你正在创建一个函数,它接受一个名为 x 的参数并返回 bool (在这种情况下)。

所以,在这种情况下,=不是赋值运算符,而是比较运算符,因此 Name属性没有改变。
(由于比较运算符,编译器推断该函数返回 bool)

它相当于
list.ForEach(sub(x) Foobar(x))

...

Function Foobar(x as Foo) As Boolean
    Return x.Name = "New Name" 'returns a boolean'
End Function

关于带有函数(x)的 VB.NET Linq 表达式未执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12264877/

相关文章:

c# - 查找 n 级嵌套子文档 MongoDB

c# - 为什么 .Equals 在此 LINQ 示例中不起作用?

sql - 无法将数据保存到 SQL Server 数据库

c# - 如何执行以下 Linq/Lambda 代码?

c# - LINQ Max 扩展方法在空集合上出错

c# - 是否有机会使用 Linq (C#) 获得唯一记录?

vb.net - 如何根据 vb.net 中的内容设置 datagridview 的行高

vb.net - 如何让我的应用看起来像 Of​​fice 2013 和 VS 2012?

mysql - VB 数据库从 2 个不同的服务器插入

vb.net - 选择持续时间为 StartDate 和 EndDate 且未包含在给定 StartDate 和 EndDate 的持续时间范围内的记录