Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VB.NET Lambda表达式代替迭代器_Vb.net_Lambda - Fatal编程技术网

VB.NET Lambda表达式代替迭代器

VB.NET Lambda表达式代替迭代器,vb.net,lambda,Vb.net,Lambda,我相当肯定这可以被改写成一个Lambda表达式,但每次尝试都失败了。我知道,C#Lambda读起来更干净,但我还是坚持使用VB.NET。这是密码-有人能给我指出正确的方向吗?谢谢 For Each e As EventToMonitor In Events If e.TypeID = 1 Then If ("," & e.Values).Contains("," & b.ChoiceID & ",") Then Notify

我相当肯定这可以被改写成一个Lambda表达式,但每次尝试都失败了。我知道,C#Lambda读起来更干净,但我还是坚持使用VB.NET。这是密码-有人能给我指出正确的方向吗?谢谢

For Each e As EventToMonitor In Events
    If e.TypeID = 1 Then
        If ("," & e.Values).Contains("," & b.ChoiceID & ",") Then
            Notify(cacheValues, e, "Event notification (button press)", "Button pressed: " & b.Text & " on screen: " & b.GroupBox.Text & Environment.NewLine & 
                       "User: " & cacheValues.CurrentUserName & Environment.NewLine & _
                       "Pressed at: " & Date.Now.ToShortDateString & " " & Date.Now.ToShortTimeString)
        End If
    End If
Next

如果您希望将整个内容转换为lambda,则类似的操作应该可以实现:

Events.Where(函数(e)e.TypeID=1,并且(“,”&e.Values)。包含(“,”&b.ChoiceID&“,”)_
托利斯先生()_
.ForEach(子(e)Notify(缓存值,e,“事件通知(按钮按下)”,“按钮按下:”&b.Text&“屏幕上:”&b.GroupBox.Text&Environment.NewLine&_
“用户:”&cacheValues.CurrentUserName&Environment.NewLine&_
按时间:“&Date.Now.ToSortDateString&&Date.Now.ToSortTimeString”)
不过,老实说,我通常更喜欢使用它们来过滤结果或构建集合:

Dim eventsList=Events.Where(函数(e)e.TypeID=1和(“,”&e.Values)。包含(“,”&b.ChoiceID&“,”)
对于事件列表中的每个e作为事件监视器
通知(缓存值,例如,“事件通知(按钮按下)”,“按钮按下:”&b.Text&“屏幕上:”&b.GroupBox.Text&Environment.NewLine&
“用户:”&cacheValues.CurrentUserName&Environment.NewLine&_
按下时间:“&Date.Now.ToShortDateString&&Date.Now.ToShortTimeString”)
下一个

如果您想将整个内容转换为lambda,类似的方法应该可以工作:

Events.Where(函数(e)e.TypeID=1,并且(“,”&e.Values)。包含(“,”&b.ChoiceID&“,”)_
托利斯先生()_
.ForEach(子(e)Notify(缓存值,e,“事件通知(按钮按下)”,“按钮按下:”&b.Text&“屏幕上:”&b.GroupBox.Text&Environment.NewLine&_
“用户:”&cacheValues.CurrentUserName&Environment.NewLine&_
按时间:“&Date.Now.ToSortDateString&&Date.Now.ToSortTimeString”)
不过,老实说,我通常更喜欢使用它们来过滤结果或构建集合:

Dim eventsList=Events.Where(函数(e)e.TypeID=1和(“,”&e.Values)。包含(“,”&b.ChoiceID&“,”)
对于事件列表中的每个e作为事件监视器
通知(缓存值,例如,“事件通知(按钮按下)”,“按钮按下:”&b.Text&“屏幕上:”&b.GroupBox.Text&Environment.NewLine&
“用户:”&cacheValues.CurrentUserName&Environment.NewLine&_
按下时间:“&Date.Now.ToShortDateString&&Date.Now.ToShortTimeString”)
下一个

在这种情况下,您想要lambda做什么?目前的代码很好。这就是说,我将使用LINQ表达式进行过滤(而不是
If
)和转换(而不是
Notify
调用中的串联),然后对结果进行迭代,为每个调用
Notify(cacheValues,value)
,其中
value
是迭代变量。在这种情况下,您希望lambda用于什么?目前的代码很好。这就是说,我将使用LINQ表达式进行过滤(而不是
If
)和转换(而不是
Notify
调用中的串联),然后迭代结果,为每个调用
Notify(cacheValues,value)
,其中
value
是迭代变量。同意,后一个例子就是我要走的路线。这样更清楚。我同意,后一个例子也是我要走的路线。这样更清楚。