私はLINQを初めて使用し、結果をデータグリッドに表示するcsvファイルからテストクエリを作成しました。Where sys = "System 1" のような単純な Where ステートメントを問題なく使用していました。いくつのシステムに対してチェックするか分からない複数の場所のテストになると、行き詰まりました。
リストと照合する場所をどのように設定すればよいですか?
Where listSystems.Contains(sys)
うまくいくはずだと思ったのですが、結果が返されません。
完全なコード
Dim lstSystem As New List(Of String)
lstSystem.Items.Add("System 1")
lstSystem.Items.Add("System 4")
lstSystem.Items.Add("System 5")
lstSystem.Items.Add("System 7")
Dim Test As String() = System.IO.File.ReadAllLines("test.csv")
Dim query = From item In Test
Let data = item.Split(","c)
Let name = data(0)
Let sys = data(1)
Let price = data(2)
Where lstSystem.Contains(sys)
Order By name, sys, price Ascending
Select name, sys, price
dgvResults.DataSource = query.ToList
dgvResults.CurrentCell = Nothing
dgvResults.Columns("name").HeaderText = "Name"
dgvResults.Columns("sys").HeaderText = "System"
dgvResults.Columns("price").HeaderText = "Price"