EF List类型转换问题

fox123871 2017-09-06 12:30:43
我写了一个方法如下,为啥返回结果 赋值个List<Person> 会报错呢,说类型转换错误!
public List<Person> GetPerson(int pageIndex, int pageSize, out int totalCount)
{
TestContext context = new TestContext();
var persons = (from p in context.People
orderby p.PID descending
select p).Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList<Person>();
totalCount = context.People.Count();
return persons;
}


在控制层里调用
int totalCount = 0
List<Person> list = GetPerson(1,2,out totalCount ); 这里报转换错误,可我返回的是list类型啊,求解答问题原理是什么呢?
...全文
411 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
threenewbee 2017-09-06
  • 打赏
  • 举报
回复
return persons.ToList();
笑容融化坚冰 2017-09-06
  • 打赏
  • 举报
回复
一个是People一个是Person,类型不同。 另外不用using语句块的话,记得调用context .dispose() 先去网上看看Linq to EF的CRUD例子吧。
qq_18868801 2017-09-06
  • 打赏
  • 举报
回复
因为返回值是IQueryable类型,不是List类型。。。List是在内存中接收,而IQueryable是在数据库端接收。所以会报错啊
正怒月神 2017-09-06
  • 打赏
  • 举报
回复
引用 2 楼 testplusplus 的回复:
一个是People一个是Person,类型不同。 另外不用using语句块的话,记得调用context .dispose() 先去网上看看Linq to EF的CRUD例子吧。
正解。
exception92 2017-09-06
  • 打赏
  • 举报
回复
context.People 然而ToList的是Person。 这个错误的提示应该会非常明显,只是没有仔细看吧。
q107770540 2017-09-06
  • 打赏
  • 举报
回复
public List<Person> GetPerson(int pageIndex, int pageSize, out int totalCount) { TestContext context = new TestContext(); var persons = (from p in context.People orderby p.PID descending select p).Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList<Person>(); totalCount = context.People.Count(); return persons; }
烟波钓 2017-09-06
  • 打赏
  • 举报
回复
引用 楼主 fox123871 的回复:
我写了一个方法如下,为啥返回结果 赋值个List<Person> 会报错呢,说类型转换错误! public List<Person> GetPerson(int pageIndex, int pageSize, out int totalCount) { TestContext context = new TestContext(); var persons = (from p in context.People orderby p.PID descending select p).Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList().Select(e=>New Person{ PID = e.PID, PName = e.PName, PAge = e.PAge }).ToList(); totalCount = context.People.Count(); return persons; } 在控制层里调用 int totalCount = 0 List<Person> list = GetPerson(1,2,out totalCount ); 这里报转换错误,可我返回的是list类型啊,求解答问题原理是什么呢?
一样的问题 public List<Person> GetPerson(int pageIndex, int pageSize, out int totalCount) { TestContext context = new TestContext(); var persons = (from p in context.People orderby p.PID descending select p).Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList<Person>(); totalCount = context.People.Count(); return persons; }

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧