模糊场景:一个人有零只、一只或多只宠物。
使用 Linq to Sql,需要获得一个IQueryable
给定 personID 的宠物列表。
这是 ERD 中被严重破坏/屠宰/混淆的部分:
Code:
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
}
引发异常:
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?)
失败的尝试:
直接投射不起作用:(IQueryable<MyType>)
调用采集方法AsQueryable
没用:.AsQueryable<MyType>()
Question:
如何将 LinqToSql 查询的结果正确地转换为IQueryable
?
这对我有用(当然使用不同的表,但关系相同):
IQueryable<Pet> personPets = (
from p in db.Person
where p.ID == somePersonID
select p
).Single().Pets.AsQueryable();
虽然我可能会用这种方式的一些变体来写它:
var personPets =
db.Person.Single(t => t.Id == somePersonId).Pets.AsQueryable();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)