我得到一个InvalidCastException,使用.Cast<>将linq实体列表转换为businessobject列表。运营商。 “无法将”Ticketing.ticket“类型的对象强制转换为类型 'Ticketing.ModelTicket'。“(名称空间名称已更改,因为下划线导致不需要的格式化)
这是我的业务对象类
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 :(得分: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));
}
}
我会说第二个问题可以说清楚到底发生了什么。