列表<tentity> .Cast <businessobject>()在隐式强制转换存在时失败</businessobject> </tentity>

时间:2009-09-09 15:40:35

标签: linq-to-sql casting

我得到一个InvalidCastException,使用.Cast&lt;&gt;将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
    }
}

1 个答案:

答案 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));
    }
}

我会说第二个问题可以说清楚到底发生了什么。