2009-09-09 53 views
1

使用.Cast <>運算符,我得到一個InvalidCastException,將linq實體列表轉換爲businessobject列表。 「無法投射類型爲'Ticketing.ticket'的對象以鍵入 'Ticketing.ModelTicket'。」 (命名空間名稱已更改,因爲下劃線是造成不必要的格式)列表<TEntity>。當隱式轉換存在時,<BusinessObject>()失敗

,這裏是我的業務對象類

public sealed class ModelTicket 
{ 
public ModelTicket(ticket ticket) 
    { 
     _Ticket = ticket; 
    } 
public static implicit operator ModelTicket(ticket item) 
    { 
     return new ModelTicket(item); 
    } 
} 

,這裏是我的擴展方法LINQ對象的列表轉換爲業務對象的列表:

public static class ModelTicketExtensions 
{ 
    public static List<ModelTicket> ToModelTickets(this List<ticket> list) 
    { 
     return list.Cast<ModelTicket>().ToList();// exception on cast 
    } 
} 
+0

Duplicate:http://stackoverflow.com/questions/808725/why-does-a-linq-castt-operation-fail-when-i-have-an-implicit-cast-defined – Wilka 2009-09-09 16:17:09

+0

@Wilka:嗯不是當然我是如何錯過的。 – Maslow 2009-09-09 18:49:43

回答

1

我會去用下面的函數:

public static class ModelTicketExtensions 
{ 
    public static List<ModelTicket> ToModelTickets(this List<ticket> list) 
    { 
     return list.ConvertAll<ModelTicket>(t => (ModelTicket)t); 
    } 
} 

如果不爲你工作,那麼你可以去完全直接路線:

public static class ModelTicketExtensions 
{ 
    public static List<ModelTicket> ToModelTickets(this List<ticket> list) 
    { 
     return list.ConvertAll<ModelTicket>(t => new ModelTicket(t)); 
    } 
} 

我想說的第二個值得商榷的上到底發生了什麼更加清晰。

+0

是的,我發現了ConvertAll並與第2號結束了,謝謝。 – Maslow 2009-09-09 18:35:29

相關問題