Linq to sql 列表<;tenty>;。铸造<;BusinessObject>;()在存在隐式强制转换时失败

Linq to sql 列表<;tenty>;。铸造<;BusinessObject>;()在存在隐式强制转换时失败,linq-to-sql,casting,Linq To Sql,Casting,我得到一个InvalidCastException,它使用.Cast运算符将linq实体列表转换为businessobject列表。 无法将类型为“Ticketing.ticket”的对象强制转换为类型 “Ticketing.ModelTicket.”(命名空间名称已更改,因为下划线导致了不必要的格式设置) 这是我的业务对象类 public sealed class ModelTicket { public ModelTicket(ticket ticket) { _Ti

我得到一个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
    }
}
公共静态类ModelTicketExtensions
{
公共静态列表ToModelTickets(此列表)
{
return list.Cast().ToList();//强制转换异常
}
}

我将使用以下功能:

public static class ModelTicketExtensions
{
    public static List<ModelTicket> ToModelTickets(this List<ticket> list)
    {
        return list.ConvertAll<ModelTicket>(t => (ModelTicket)t);
    }
}
公共静态类ModelTicketExtensions
{
公共静态列表ToModelTickets(此列表)
{
返回列表.ConvertAll(t=>(ModelTicket)t);
}
}
如果这对你不起作用,那么你可以走完全直接的路线:

public static class ModelTicketExtensions
{
    public static List<ModelTicket> ToModelTickets(this List<ticket> list)
    {
        return list.ConvertAll<ModelTicket>(t => new ModelTicket(t));
    }
}
公共静态类ModelTicketExtensions
{
公共静态列表ToModelTickets(此列表)
{
返回列表.ConvertAll(t=>newmodelticket(t));
}
}

我想说,第二个是有争议的,更清楚地说明到底发生了什么。

我将使用以下函数:

public static class ModelTicketExtensions
{
    public static List<ModelTicket> ToModelTickets(this List<ticket> list)
    {
        return list.ConvertAll<ModelTicket>(t => (ModelTicket)t);
    }
}
公共静态类ModelTicketExtensions
{
公共静态列表ToModelTickets(此列表)
{
返回列表.ConvertAll(t=>(ModelTicket)t);
}
}
如果这对你不起作用,那么你可以走完全直接的路线:

public static class ModelTicketExtensions
{
    public static List<ModelTicket> ToModelTickets(this List<ticket> list)
    {
        return list.ConvertAll<ModelTicket>(t => new ModelTicket(t));
    }
}
公共静态类ModelTicketExtensions
{
公共静态列表ToModelTickets(此列表)
{
返回列表.ConvertAll(t=>newmodelticket(t));
}
}

我想说,第二个是有争议的,更清楚地说明到底发生了什么。

重复:@Wilka:hmm不确定我是怎么错过的。重复:@Wilka:hmm不确定我是怎么错过的。是的,我找到了ConvertAll,最后选择了2号,谢谢。是的,我找到了ConvertAll,最后选择了2号,谢谢。