首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >不能隐式转换类型IEnenumerable<T>到IQueryable<T>

不能隐式转换类型IEnenumerable<T>到IQueryable<T>
EN

Stack Overflow用户
提问于 2018-01-26 00:42:12
回答 2查看 0关注 0票数 0

一个人有零、一只或多只宠物。

使用Linq到SQL,需要获得IQueryable给定个人的宠物列表。以下是ERD中损坏/屠宰/模糊的部分:

代码:

代码语言:txt
复制
 public IQueryable<Pet> GetPersonPets(int personID)
    {
        var personPets= from p in Person
        where p.ID == somePersonID
        select p.Pets;

        return personPets; //fail
        // return (IQueryable<Pet>)personPets  //also fail
        // return personPets.AsQueryable<Pet>()  //also fail
    }

提出的例外情况:

代码语言:txt
复制
Cannot implicitly convert type 
'System.Collections.Generic.IEnumerable (System.Data.Linq.EntitySet(Pet))' 
to 'System.Linq.IQueryable(Pet)'. 
An explicit conversion exists (are you missing a cast?) 

失败尝试:

Direct casting didn't work: (IQueryable<MyType>)

Calling collection method AsQueryable didn't work: .AsQueryable<MyType>()

问题:

如何正确地将LinqToSql查询的结果转换为IQueryable?

EN

回答 2

Stack Overflow用户

发布于 2018-01-26 09:15:47

代码语言:txt
复制
IQueryable<Pet> personPets = (
   from p in db.Person
   where p.ID == somePersonID
   select p
).Single().Pets.AsQueryable();

虽然我可能会用这种方式编写它:

代码语言:txt
复制
var personPets = 
    db.Person.Single(t => t.Id == somePersonId).Pets.AsQueryable();    
票数 0
EN

Stack Overflow用户

发布于 2018-01-26 09:49:46

代码语言:txt
复制
List<Pet> personPets = 
   (from p in Persons
   where p.ID == somePersonID
   select p.Pets).ToList();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100007239

复制
相关文章

相似问题

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