在LINQ查询中不能使用三元运算符

时间:2010-06-07 17:10:27

标签: c# linq

如果我在LINQ查询中使用三元运算符,我无法弄清楚为什么会出现Object reference not set to an instance of an object.错误。

var courses = from d in somesource
                          orderby d.SourceName, d.SourceType
                          select new
                          {
                              ID = d.InternalCode,
                              Name = string.Format("{0} - {1}{2}", d.InternalCode, d.SourceName, (d.SourceType.Length > 0 ? ", " + d.SourceType : string.Empty))
                          };

有什么想法吗?

3 个答案:

答案 0 :(得分:8)

d.SourceTypenull

你应该致电

(String.IsNullOrEmpty(d.SourceType) ? ", " + d.SourceType : string.Empty)

答案 1 :(得分:1)

您正在检查Length的{​​{1}}属性,该属性可能为空。

答案 2 :(得分:1)

也许SourceType为null,因此您在d.SourceType.Length上获得异常。