2017-06-21 89 views
1

請看看這個簡單的LINQ查詢之前檢查空:LINQ到實體查詢,使用導航屬性

var lst = from pat in ctx.PATIENTS 
           join cons in ctx.CONSULTATIONS.Include(a => a.EXAMENS) 
           on pat.ID_PATIENT equals cons.CON_ID_PATIENT into joinpatcons 
           from p in joinpatcons.DefaultIfEmpty() 
           select new ConsultationsPageType() 
           { 
            ID_CONSULTATION = (p == null) ? 0 : p.ID_CONSULTATION 
           }; 

的ID_CONSULTATION字段是一個可空INT

public class ConsultationsPageType 
    { 
     ...... 
     public int? ID_CONSULTATION { get; set; } 
     ...... 
    } 

我想要的是返回null如果p是null而不是零。

通過替換爲null簡單地0給了我這個錯誤

無法確定條件表達式的類型,因爲有 之間和intentre和沒有隱式轉換詮釋

且p?.ID_CONSULTATION此一個

lambda表達式樹狀不能包含空傳播 運算符

我是.NET 4.6

感謝上。

+1

那麼什麼是很難在其更改爲'ID_CONSULTATION =(P == NULL)? null:p.ID_CONSULTATION'?我錯過了什麼嗎? –

+0

對不起,請看編輯過的問題 – user2475096

+0

你可以將'null'轉換爲'int?'。看到我更新的答案。 –

回答

1

您可以簡單地改變零null和它轉換爲int?

ID_CONSULTATION = (p == null ? (int?)null : p.ID_CONSULTATION) 
+0

工作得很好!謝謝 :) – user2475096