2012-03-02 5 views
0

에 C#을 LINQ이는 오류를'개체 참조가 개체의 인스턴스로 설정되지 않았습니다.' SQL

var physician = (from userAccounts in myDb.Physicians 
          where userAccounts.Phy_UserName == txtUserName.Text 
          select userAccounts).FirstOrDefault(); 

      setFirstName(physician.Phy_FName); 

을 보여줍니다 코드 줄은하지만 내 세터에서 나는 null 값의 경우는 아무것도 할 것이라고하지만 오는 방법 사전 조건이 아직도 신발 그 오류? 여기에 내가 의사 쿼리 null을 반환 같은데요 내 세터 코드

public void setFirstName(string fName) { 
      if (fName == null) 
      { 
      } 
      else { 
       firstName = fName; 
      } 
     } 
+1

의 중복 가능성 (http://stackoverflow.com/questions/4660142/what-is- : 여기

이 더 깊이 명확하게 소위 질문 a-nullreferenceexception-in-net) –

답변

1

이 시도 :

var physician = (from userAccounts in myDb.Physicians 
          where userAccounts.Phy_UserName == txtUserName.Text 
          select userAccounts).FirstOrDefault(); 

if(physician != null) 
{ 
    setFirstName(physician.Phy_FName); 
} 
else 
{ 
    //Throw Error or any any other processing as needed. 
} 
4

입니다.

그러면 null 값의 Phy_FName 속성을 호출하려고합니다. Phy_FNamenull을 아니에요 무엇 때문에이 경우에 당신을 보호하지 것이다 setFirstName 방법에 null 값을 확인

, physician이다.

또한, setFirstName 메서드에서 fName이 빈 문자열이 아닌지 확인할 수도 있습니다. 두 조건 모두에 대해 if (!String.IsNullOrEmpty(fName))

+0

처음에는 내 가정 이었지만 FirstOrDefault는이를 방지해야합니다. –

+5

아니요, FirstOrDefault()는 결과가 없으면 null 값을 반환합니다. First()는 예외를 throw합니다. – Eric

+0

죄송합니다. 참조 유형의 기본값이 무엇인지 생각하지 않았습니다. 내 사과, 그리고 나를 상기시켜 주셔서 감사합니다 :) –

0

내기를 사용할 수 있습니다. physician은 null입니다. 쿼리에서 아무것도 얻지 못 하셨나요?

0

속성은 어느 방식 으로든 평가되므로 속성을 읽으려고하기 전에 physician이 null이 아닌지 확인하십시오.

당신은 그것을 사용하기 전에 physician의 값을 확인해야합니다 :

if (physician != null) 
    setFirstName(physician.Phy_FName); 
0

어쩌면 당신이 있다고 내 자신의 잘못된 가정을 명확히하기 위해 또한 생각 :

FirstOrDefault는 기본값이 있으면 반환하지만 개체의 기본값은 null입니다. 따라서 Linq 쿼리가 의사에게 null 값을 반환 할 가능성이 큽니다. 그 중 Phy_FName에 액세스하려고합니다. [? .NET에서 NullReferenceException이 무엇] Specify default value for a reference type

+0

soo 그것은 null이 Phy_FName만을 의미하지 않는다는 것을 의미합니까? 의사 객체가 null입니까? 그게 다야? – user962206

+0

예, 맞습니다. –

관련 문제