首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >LINQ .Cast()扩展方法失败,但(类型)对象有效

LINQ .Cast()扩展方法失败,但(类型)对象有效
EN

Stack Overflow用户
提问于 2010-05-12 21:59:54
回答 2查看 5.6K关注 0票数 18

为了在一些LINQ To SQL对象和DTO之间进行转换,我们在DTO上创建了显式cast操作符。这样我们就可以做到以下几点:

代码语言:javascript
复制
DTOType MyDTO = (LinqToSQLType)MyLinq2SQLObj;

这样做效果很好。

但是,当您尝试使用LINQ .Cast()扩展方法进行强制转换时,它会出现一个无效的强制转换异常,声明不能将类型Linq2SQLType强制转换为类型DTOType。例如,下面的代码不起作用

代码语言:javascript
复制
List<DTO.Name> Names = dbContact.tNames.Cast<DTO.Name>()
                                               .ToList();

但是下面的代码运行良好:

代码语言:javascript
复制
DAL.tName MyDalName = new DAL.tName();
DTO.Name MyDTOName = (DTO.Name)MyDalName;

下面的代码也很好用

代码语言:javascript
复制
List<DTO.Name> Names = dbContact.tNames.Select(name => (DTO.Name)name)
                                               .ToList();

为什么.Cast()扩展方法抛出一个无效的强制转换异常?我过去曾多次以这种方式使用.Cast()扩展方法,当您将基类型之类的东西强制转换为派生类型时,它工作得很好,但当对象具有显式强制转换操作符时,它就会失败。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2819473

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档