首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linqtosql -返回带有接口的自定义类

Linqtosql -返回带有接口的自定义类
EN

Stack Overflow用户
提问于 2009-11-13 19:53:38
回答 2查看 157关注 0票数 0

为什么我不能作为实现ISite的新的自定义类(cms.bo.Site)返回?

代码语言:javascript
复制
public IQueryable<ISite> GetSites()
{
    return (from site in Db.Sites select new cms.bo.Site(site.id, site.name));
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-11-13 19:56:56

基本上,LINQ to SQL不知道构造函数会做什么-它想尝试将其转换为SQL查询,但不知道如何转换。之后,您是否需要能够向查询中添加额外的位?如果不是,您可以这样做:

代码语言:javascript
复制
public IEnumerable<ISite> GetSites()
{
    return Db.Sites.Select(x => new { x.id, x.name }) // Project in SQL
                   .AsEnumerable() // Do the rest in process
                   .Select(x => new cms.bo.Site(x.id, x.name))
                   .Cast<ISite>(); // Workaround for lack of covariance
}

编辑:我错过了方差方面,并假设查询在执行时失败。根据tvanfosson的回答,只调用Cast<ISite>()绝对值得一试-但如果这不起作用,请尝试上面的方法:)

票数 4
EN

Stack Overflow用户

发布于 2009-11-13 19:58:02

试试这个:

代码语言:javascript
复制
    return Db.Sites
             .ToList()
             .Select( s => new cms.bo.Site( s.id, s.name ) )
             .Cast<ISite>()
             .AsQueryable();
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1728768

复制
相关文章

相似问题

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