VB.NET 具有各种键的 LINQ WHERE 查询集合抛出 KeyNotFoundException
VB.NET LINQ WHERE query collection with various keys throws KeyNotFoundException
我想 select 使用 LINQ WHERE 函数和 lambda 从集合中提取第一个元素,但是有些元素没有主题键(只有一个元素有它) - 所以我收到 KeyNotFoundException 错误...;-/
see collection structure
有什么办法可以解决吗?
views.First(Function(x) x("DefaultView").ToString = "TRUE")
...抛出 'System.Collections.Generic.KeyNotFoundException'
类型的异常
谢谢。 #JK
你应该可以做到
views.FirstOrDefault(Function(x As Dictionary(Of String, Object))
Return x.ContainsKey("DefaultView") AndAlso x("DefaultView").ToString() = "TRUE"
End Function)
ContainsKey
确保 Key 存在于字典中。
AndAlso
如果 ContainsKey returns true
只会检查第二个条件
x("DefaultView")
将不再出错,因为我们知道它存在
为了避免在字典中重复查找。
views.FirstOrDefault(Function(x)
Dim value
Return x.TryGetValue("DefaultView", value) AndAlso value.ToString() = "TRUE"
End Function)
我想 select 使用 LINQ WHERE 函数和 lambda 从集合中提取第一个元素,但是有些元素没有主题键(只有一个元素有它) - 所以我收到 KeyNotFoundException 错误...;-/ see collection structure
有什么办法可以解决吗?
views.First(Function(x) x("DefaultView").ToString = "TRUE")
...抛出 'System.Collections.Generic.KeyNotFoundException'
谢谢。 #JK
你应该可以做到
views.FirstOrDefault(Function(x As Dictionary(Of String, Object))
Return x.ContainsKey("DefaultView") AndAlso x("DefaultView").ToString() = "TRUE"
End Function)
ContainsKey
确保 Key 存在于字典中。
AndAlso
如果 ContainsKey returns true
只会检查第二个条件
x("DefaultView")
将不再出错,因为我们知道它存在
为了避免在字典中重复查找。
views.FirstOrDefault(Function(x)
Dim value
Return x.TryGetValue("DefaultView", value) AndAlso value.ToString() = "TRUE"
End Function)