在VB.NET中,可能有与For Each
循环中的SQL'WHERE'子句类似的东西吗? I.E.模拟VB.NET中的For Each循环中的'Where'子句
FOR EACH event IN events
'WHERE eventdate=getdate
NEXT
在VB.NET中,可能有与For Each
循环中的SQL'WHERE'子句类似的东西吗? I.E.模拟VB.NET中的For Each循环中的'Where'子句
FOR EACH event IN events
'WHERE eventdate=getdate
NEXT
在LINQ这将是(.NET 3.5或更高版本)
For Each event in events.Where(Function(x) x.eventdate = getdate)
'Process event
Next
及非LINQ的(。净2.0或更低)
For Each event in events
If event.eventdate = getdate Then
'Process event
End If
Next
你不能做你在每个循环中描述的内容。你可以在C#中的for循环中做到这一点,但我不认为你可以在VB.NET中。
你真的有多个选项可以解决这个问题。
一种方法是做到这一点:
For Each event As Event in events
If eventdate = getdate then
Continue For
End If
Next
您还可以使用LINQ,但它是在这种情况下值得商榷是否会帮助你。
当然是,这个例子应该足以让你去:
For Each dvr As DataRowView In dv
If dvr("IsVisible") = False Then
Continue For
End If
' Do something here
Next
随着LINQ:
For Each p As Person In (From pers In Persons Where pers.Firstname = "Stefan")
'Only handle persons with first name "Stefan"
MsgBox(p.LastName)
Next
End Sub
+1,这是我会给出的答案。尽管如此,不需要“选择人”。 – 2009-08-20 05:35:36
Jakob,我不确定我可以省略最后的“select pers”,并且无法在发布前对其进行测试,但现在已经编辑了答案。谢谢你的观点! – Stefan 2009-08-20 13:50:26
我的2美分:
如果您使用的列表(Of T)已VB 8.0(.NET Framework 2.0中).FindAll:
Public Shared Sub Show()
Dim filtredEvents As List(Of Event) = New List(Of Event)().FindAll(Function (ByVal e As Event)
Return (e.EventDate = DateTime.Today)
End Function)
Dim anEvent As Event
For Each anEvent In filtredEvents
Console.WriteLine(anEvent.EventDate)
Next
End Sub
使用LINQ /扩展方法,是的。你使用的是什么版本的VB/.NET? – 2009-08-20 00:19:33