次のクラスを検討してください。
Public Class Employee
Public State As String
Public Dept As String
Public Status as Integer
End Class
4 つのレコードであるa から個別の値をクエリする必要があります。listEmployees
oEmp = New Employee
oEmp.Dept = "HR"
oEmp.State = "Kansas"
oEmp.Status = 1
listEmployees.Add(oEmp)
oEmp = New Employee
oEmp.Dept = "HR"
oEmp.State = "Texas"
oEmp.Status= 3
listEmployees.Add(oEmp)
oEmp = New Employee
oEmp.Dept = "HR"
oEmp.State = "Texas"
oEmp.Status= 5
listEmployees.Add(oEmp)
oEmp = New Employee
oEmp.Dept = "DEV"
oEmp.State = "Texas"
oEmp.Status= 7
listEmployees.Add(oEmp)
クエリで実行する必要があるのは、State
= 'Texas' である個別の Deparments を返すことです。ただし、句に複数のケースを追加できる必要があります。Where
したがって、別のクエリで、State
= 'Texas' とDept
= 'HR' という個別の Status を返す必要がある場合があります。
明確にする必要があるフィールドは常に 1 つだけです。
したがって、最初のクエリ例の結果は "HR" と "DEV" になります。これは、州が "Texas" である個別の部門であるためです。2 番目のクエリの結果は "3" と "5" になります。これは、州が "Texas" で部門が "HR" である個別のステータスであるためです。
アップデート:
クエリ#1で作業しているものは次のとおりです。
Dim test = (From emp As Employee In listEmployees
Where emp.State = "Texas"
Select emp.Dept).Distinct()
ただし、State
「TTexas」など、存在しないものを指定すると、次の例外が発生します (コードは爆発しませんが、test
この行の実行後に Visual Studio で変数を調べると、これが発生します) :
タイプ 'System.Linq.SystemCore_EnumerableDebugViewEmptyException' の例外がスローされました。System.Linq.SystemCore_EnumerableDebugView`1.get_Items() で
これは通常の LINQ の動作ですか?