2011-03-29 71 views
0

我想這樣做:我可以在選擇Linq to Entities查詢中有條件嗎?

Dim person = From p In context.persons 
    Order By p.fileNum 
    Select p.ID, 
    p.firstName, 
    p.lastName, 
    startPenpal = IIf(p.prPenPals.Count > 0, 
     p.prPenPals.FirstOrDefault.startProfile, "") 

我得到這個錯誤:

LINQ到實體無法識別方法 'System.Object的IIF(布爾,System.Object的,System.Object的)' 的方法,並且此方法不能轉換爲商店表達式。

我試圖

Select p.ID, p.firstName, p.lastName, 
    startPenpal = If(i.prPenPals.Count > 0, 
     i.prPenPals.FirstOrDefault.startProfile, "") 

,我得到這個錯誤:

無法轉換類型 'System.DateTime的' 輸入 'System.Object的'。 LINQ to Entities僅支持投射實體數據模型基元類型。

有沒有辦法做到這一點? prPenpals可以爲人員中的每個記錄包含零個或一個記錄。人與prPenPal之間可能存在一對一的關係,但該模型將其視爲一對多關係,我無法對其進行修改。

回答

0

你的錯誤是在這裏,我想:

If(i.prPenPals.Count > 0, i.prPenPals.FirstOrDefault.startProfile, "") 

你應該確保你將返回相同類型的值。 如果i.prPenPals.FirstOrDefault.startProfile是一個DateTime,那麼這樣做:

If(i.prPenPals.Count > 0, i.prPenPals.FirstOrDefault.startProfile, DateAndTime.MinValue) 

不知道關於VB的語法,因爲我在C#中,但主要的思想是一致的。