2011-04-14 3 views
1

오늘 내가 직면 한 문제가 있습니다.표현식은 항상 거짓입니다.

나는

EmPayRollData emPayRollData = payroll.EmPayRollDatas.First(); 

모두 급여 C#으로 성명을 가지고 EmPayRollData는 엔티티입니다. 즉 급여가 부모이고 EmPayRollData가 자식입니다. payroll.EmPayRollDatas가 비어있을 수 있다면, 당신은 대신 사용해야합니다

+1

사용합니다. 엔티티 중 하나의 철자가 틀렸다고 생각하고 급여가 어디 있는지 파악하는 데 몇 분이 걸렸습니다. 정확히 무엇을하고 있는지 불분명합니다. 문제가있는 인접한 코드 블록을 게시 할 수 있습니까? –

답변

5

"표현이 항상 false입니다":

payroll.EmPayRollDatas.FirstOrDefault() 

companyRow.CompanyName = (empowerPayRollData == null) ? string.Empty : empowerPayRollData.Name; 

내가 말하는 ReSharper에서 주석을 얻을 :

지금 나는 문이

빈 열거 형의 경우 null을 반환합니다. First은이 경우 예외를 던지므로 질문하는 코드 행에 도달하면 시퀀스가 ​​비어 있지 않으므로 변수가 null 일 수 없습니다.

+0

네, 그게 문제였습니다. 너와 다른 사람들 덕분에. – SaiBand

5

First()은 개체를 반환하거나 그렇지 않으면 예외를 throw하기 때문입니다. Resharper는 그 라인에 도달하면 empowerPayRollData가 null이 아님을 알고 있습니다. 이 경우 FirstOrDefault을 사용하는 것이 좋습니다.

+0

니스, 나는 그것을 완전히 놓쳤다! –

+0

Resharper가 인상적입니다, 나는 말해야합니다 :) –

1

Resharper는 아마도 .First()이 null이 아니거나 예외가 될 것이라는 것을 알고있을 것입니다.

이로부터 표현식이 항상 거짓임을 유추 할 수 있습니다.

당신이 빈 결과-세트를 기대한다면

, 나는 당신이 당신의 코드 샘플을 개정 할 필요가 있다고 생각 .FirstOrDefault()