我有一些linq代码,有时是null
:
cbo3.ItemsSource = empty.Union(from a in
(from b in CompleteData
select b.TourOpID).Distinct()
select new ComboBoxItemString() { ValueString = a.Value.ToString() });
但是TourOpID
有时会在a.Value.ToString()
上抛出一个错误。我该怎么解决这个问题?
4条答案
按热度按时间hmae6n7t1#
出现问题是因为您访问
Nullable
类型的Value
property,该类型为null
(或者更准确地说,其HasValue
属性为false
)。如何解决此问题取决于您要执行的操作:1.如果你想过滤掉
TourOpID
为null的条目,只需添加一个where
子句:1.如果您想使用替换值,例如
0
,如果TourOpID
为null,则使用null coalescing operator??
,它将您的int?
转换为int
:或者,可替换地,
1.如果你只想在
TourOpID
为null时显示一个不同的ComboBox条目,可以使用三元运算符?:
:如果你想在
a
为null时显示空字符串,解决方案更简单:因为如果Nullable.ToString没有值,则返回空字符串。
58wvjzkj2#
使用
where
8iwquhpp3#
为什么不使用
ValueString = a.ToString()
而不是ValueString = a.Value.ToString()
?如果a
有一个值,它将返回这个值到字符串,如果没有-a.ToString()
将返回空字符串。输出为:
cczfrluj4#