条件运算符未按预期工作

时间:2013-06-14 13:08:17

标签: c# entity-framework sqlite conditional-operator

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

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

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

我收到“Value not not null”错误。谢谢。

修改

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

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)

5 个答案:

答案 0 :(得分:3)

也许你需要:

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

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

完整摘录:

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

答案 1 :(得分:1)

你也可以试试这段代码:

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

答案 2 :(得分:0)

也许应该是

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

答案 3 :(得分:0)

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

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

答案 4 :(得分:0)

又一个答案::)

sliderQuestion11.Value = string.IsNullOrWhitespace(cs.q11) ? 10.0 : Convert.ToDouble(cs.q11);