考慮下面的類:LINQ查詢 - 如果不匹配會引發異常?
Public Class Employee
Public State As String
Public Dept As String
Public Status as Integer
End Class
我需要從一個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
='德克薩斯州'。 但我需要能夠將多個案例添加到Where
子句。因此,另一個查詢可能需要返回不同的狀態,其中State
='Texas',Dept
='HR'。
總是隻有一個我需要區分的字段。
因此,我的第一個查詢示例的結果將是「HR」和「DEV」,因爲這些是具有「德克薩斯州」作爲州的不同部門。第二個查詢的結果將是「3」和「5」,因爲這些是狀態爲「德州」而部門爲「HR」的不同狀態。
UPDATE:
這裏就是我有工作了查詢#1:
Dim test = (From emp As Employee In listEmployees
Where emp.State = "Texas"
Select emp.Dept).Distinct()
但是,如果我指定的東西State
不存在,如 「TTexas」 ,我得到以下例外(代碼不會炸燬,但如果我檢查此行執行後在Visual Studio中的變量test
,我得到這個):
類型爲 的異常'System.Linq.SystemCore_EnumerableDebugViewEmptyException'被引發。 at System.Linq.SystemCore_EnumerableDebugView`1.get_Items()
這是正常的LINQ行爲嗎?
區別不是它是一種操作的條件。如果您想告訴我,您想要返回員工所屬的每個部門的第一條記錄,這樣會更有意義。你需要改變你的問題,這也有助於提供一些演示數據和你想要的輸出。 – JamieSee
感謝您的評論。通過再次閱讀我的問題很明顯,我需要重新說出它。請參閱我更新的問題和示例數據。 – lhan
當你試圖在調試器中查看一個空的可枚舉的內容時,你會得到一個'EnumerableDebugViewEmptyException' - 看起來是合理的:-)嘗試先用'.ToList()'將它轉換爲一個列表。 –