2009-08-20 7 views
4

VB.NETのFor EachループにSQLのWHERE句と類似のものを使用できますか? I.E。VB.NETのFor Eachループで 'Where'節をシミュレートする

FOR EACH event IN events 
    'WHERE eventdate=getdate 
NEXT 
+1

あなたは.FindAll(Tの)一覧にVB 8.0(.NET Framework 2.0を)を使用している場合。どのバージョンのVB/.NETを使用していますか? –

答えて

6

それは(.NET 3.5以上)

For Each event in events.Where(Function(x) x.eventdate = getdate) 
     'Process event 
Next 

と非LINQの(だろう。ネット2.0以下)LINQで

For Each event in events 
    If event.eventdate = getdate Then 
     'Process event 
    End If 
Next 
0

ループごとに説明していることはできません。あなたはCの#forループでそれを行うことができますが、私はあなたがVB .NETでできるとは思わない。

本当にこれを解決する方法は複数あります。

一つの方法は、これを行うには、次のようになります。

For Each event As Event in events 
    If eventdate = getdate then 
     Continue For 
    End If 
Next 

また、それは、LINQを使用して行うことができますが、それはあなたを助けるならば、それは、この場合には議論の余地があります。

0

それは確かに、この例では、あなたが軌道に乗るために十分でなければなりません:LINQで

For Each dvr As DataRowView In dv 
    If dvr("IsVisible") = False Then 
     Continue For 
    End If 

     ' Do something here 
Next 
2

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 
+0

+1、それは私が与えた答えです。しかし、最後に "Select pers"の必要はありません。 –

+0

ヤコブ、私は最終的に "select pers"を省略できず、投稿する前にテストすることができませんでしたが、今答えを編集しました。ポイントをありがとう! – Stefan

1

私の2セント:はい、LINQ /拡張メソッドを使用して


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 

関連する問題