1

嗨我試圖選擇第二個驅動程序和價格,但我收到錯誤兩列的值:不能隱式地將類型'System.Linq.IQueryable'轉換爲' System.Linq.IQueryable」。一個顯式轉換存在(是否缺少強制轉換?)Linq to Entity中選擇2列值的問題

下面是代碼:

public IQueryable<Event> GetSecondDriverOption(int eventID) 
{ 
    ApextrackdaysEntities entity = new ApextrackdaysEntities(); 
    IQueryable<Event> SecondDriver = from p in entity.Events 
             where p.ID == eventID 
             select new{ p.SecondDriver, 
                p.SecondDriverPrice}; 
    return SecondDriver; 
} 

任何幫助或建議,可以理解日Thnx

回答

3

當你想到IQueryable<Event>,你不能使用投影Event是您的映射類型。你必須選擇Event

IQueryable<Event> SecondDriver = from p in entity.Events 
           where p.ID == eventID 
           select p; 

或者你必須創建新的類型和項目數據到一個新的類型:

public class EventDto 
{ 
    public Driver SecondDriver { get; set; } 
    public Price SecondDriverPrice { get; set; } 
} 

,並重新定義你的方法:

public IQueryable<EventDto> GetSecondDriverOption(int eventID) 
{ 
    ApextrackdaysEntities entity = new ApextrackdaysEntities(); 
    IQueryable<EventDto> SecondDriver = from p in entity.Events 
             where p.ID == eventID 
             select new EventDto 
              { 
               SecondDriver = p.SecondDriver, 
               SecondDriverPrice = p.SecondDriverPrice 
              }; 
    return SecondDriver; 
} 
+0

您使用過的類EventDto是自定義形狀查看模型類。 –

+0

像你想要的那樣稱呼它。它是允許您僅選擇兩列/屬性並從方法返回它的類。 –

1

您不能返回匿名對象。像這樣嘗試:

public IQueryable<Event> GetSecondDriverOption(int eventID) 
{ 
    ApextrackdaysEntities entity = new ApextrackdaysEntities(); 
    var seconDriver = 
      from p in entity.Events 
      where p.ID == eventID; 
      select p; 
    return secondDriver; 
} 
+0

但我希望這兩列不只是seconddriver –

+0

所以我可以做一些像secondDriver.price,viceversa在控制器通過調用這個類 –

+0

@Muhammad Awais,你應該使用視圖模型,以便控制器查詢數據並填充此視圖模型將被傳遞給視圖。該視圖模型將包含您的視圖所需的屬性。 –