0

我有以下代码,其中我使用条件运算符查找空值并在找到空值时分配另一个值。我的问题是由于某种原因它没有正确检测到空值。

sliderQuestion11.Value = Convert.ToDouble(cs.q11 != null ? cs.q11 : "10");

cs 是一个由 SQLite 查询填充的类,而 q11 是一个字符串。

我收到“值不能为空”错误。谢谢。

编辑

感谢大家的帮助。所有这些答案都应该有效,但我要做的不仅仅是返回

query.FirstOrDefault()

我必须执行以下操作

CustomerSurvey cs = new CustomerSurvey();
cs.q1 = query.FirstOrDefault().q1 ?? "-10";
cs.q2 = query.FirstOrDefault().q2 ?? "-10";
cs.q3 = query.FirstOrDefault().q3 ?? "-10";                        
cs.srID = query.FirstOrDefault().srID;

现在这有效

sliderQuestion11.Value = Convert.ToDouble(cs.q11 != "-10" ? cs.q11 : "10");

(我知道您会说为什么不将其设置为 10,但我需要在代码的其他位置检测空值。这就是我使用 -10 的原因)

4

5 回答 5

3

也许你需要:

!string.IsNullOrEmpty(cs.q11) ? cs.qll : "10";

使用的原因string.IsNullOrEmpty是因为字符串可能只是空的而不是null.

完整片段:

sliderQuestion11.Value = Convert.ToDouble(!string.IsNullOrEmpty(cs.q11) ? cs.qll : "10");
于 2013-06-14T13:10:49.753 回答
1

你也可以试试这段代码:

sliderQuestion11.Value = Convert.ToDouble(cs.q11 ?? "10");
于 2013-06-14T13:11:17.820 回答
0

也许应该是

sliderQuestion11.Value = (cs != null && (!string.IsNullOrWhitespace(cs.q11)) ? Convert.ToDouble(cs.q11) : 10);
于 2013-06-14T13:11:16.607 回答
0
sliderQuestion11.Value = Convert.ToDouble(!string.IsNullOrWhiteSpace(cs.q11) ? cs.q11 : "10");

除了 null 和空检查之外,这还将检查字符串是否仅包含 1 个或多个空格。

于 2013-06-14T13:11:18.697 回答
0

另一个答案::)

sliderQuestion11.Value = string.IsNullOrWhitespace(cs.q11) ? 10.0 : Convert.ToDouble(cs.q11);
于 2013-06-14T13:17:49.540 回答