2010-06-07 4 views
3

LINQ 쿼리에서 삼항 연산자를 사용하면 Object reference not set to an instance of an object. 오류가 발생하는 이유를 알 수 없습니다.LINQ 쿼리에서 삼항 연산자를 사용할 수 없습니다.

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)) 
          }; 

의견이 있으십니까?

답변

8

d.SourceTypenull입니다.

당신은 당신이 null이 될 수 SourceTypeLength 속성을 확인하고

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

정확합니다. 문자열이라도 비어있는 경우 null이 반환됩니다. 감사. 나를 허용하면 정답으로 선택하겠습니다. 나는 비슷한 대답을 upvoted했습니다. –

1

를 호출해야합니다.

1

어쩌면 SourceType이 null이므로 d.SourceType.Length에 예외가 발생합니다.

관련 문제