混淆场景:一个人有零个、一个或多个宠物。
使用 Linq to Sql,需要获取IQueryable
给定 personID 的宠物列表。这是 ERD 的糟糕的损坏/屠宰/混淆部分:
代码:
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
}
引发异常:
无法隐式转换类型 'System.Collections.Generic.IEnumerable (System.Data.Linq.EntitySet(Pet))' 到“System.Linq.IQueryable(Pet)”。 存在显式转换(您是否缺少演员表?)
失败的尝试:
直接铸造不起作用: (IQueryable<MyType>)
调用收集方法AsQueryable
不起作用: .AsQueryable<MyType>()
问题:
如何正确地将 LinqToSql 查询的结果转换为IQueryable
?