2013-06-18 3 views
2

나는이 예외를 제공하는 쿼리를 가지고 있습니다. 지금 j.job_quote.JobQuoteID 내가 문제를 얻고있다 그리고 난 그것을연산자 '??' 'int'및 'int'유형의 피연산자에 적용 할 수 없습니다.

var Qryjob = (from j in at.jobs 

        where j.JobID == Convert.ToInt32(jobid) 
        select new { 
         JobID = j.JobID, 
         InsertedDate = j.InsertedDate, 
         FirstName = j.user.FirstName, 
         LastName = j.user.LastName, 
         City = j.user.City, 
         ServiceName = j.service.ServiceName, 
         ServiceTypeName = j.service_type.ServiceTypeName, 
         BudgetName = j.budget.BudgetName, 
         IsApproved = j.IsApproved, 
         IsAssigned = j.IsAssigned, 
         IsQuoted = j.IsQuoted, 
         job_notif_price = j.job_notif_price, 
         Description = j.Description, 
         PaymentTypeName = j.payment_type.PaymentTypeName, 
         DuePeriodName = j.due_period.DuePeriodName, 
         QuoteStatus = j.job_quote.QuoteStatus, 
         JobStatus = j.job_quote.JobStatus, 
         comments = j.job_quote.comments, 
         IsPartnerApply = j.job_quote.IsPartnerApply, 
         Applycomment = j.job_quote.ApplyComments, 
         JobQuoteID = j.job_quote.JobQuoteID ?? 0 
        }).ToList(); 

답변

24

을 처리하기 위해 무엇을 할 수있는 이유, 목 널 (null)이 다음 0으로 식별하는 경우 도와주세요를 체크를 만들려고 null로 ID 열 , 귀하의 경우 JobQuoteID 유형 int??? 연산자의 왼쪽에 변수가 (당신이 그것에 널 assing 수 있음을 의미) null로이해야하지 int

10

컴파일러는 j.job_quote.JobQuoteID 유형 int의 있음을 말하고있다 . int은 null이 될 수없는 값 유형이므로 null 일 수 없습니다. ?? 연산자는 Null을 허용하지 않는 형식에서는 호출 할 수 없습니다.

4

null-coalescing 연산자입니다. null 가능 유형에만 적용되거나 왼쪽면이 null 허용 유형이어야합니다. (내 언어는 틀릴 수도 있지만 nullable이라고 말하면 나는 모두 Nullable<T>과 참조를 의미합니다. 유형). int 대신 int?이 있으면 제대로 작동합니다. 연산자는 바이너리이며 그렇게 작동합니다. a ?? ba이 null 인 경우 b 값을 사용한다고 말합니다. 원하는만큼 여러 번 연결할 수 있습니다. 따라서 int willNeverBeNull = a ?? b ?? c ?? 4을 가정 할 수 있습니다. a, b 및 c는 모두 nullable int이며 첫 번째 Null이 아닌 값을 사용합니다.

JobQuoteID = (j.job_quote ?? new job_quote { JobQuoteID = 0 }).JobQuoteID 

희망이 당신의 문제를 해결합니다 :

0

는 @Servy, 따라서 표현이 있어야 할 당신의 job_quote 오브젝트가 null이기 때문에 JobQuoteID 대신 내가 오류가 발생하는 생각으로 문제가되지 않습니다 말했듯이.

관련 문제