悬赏分:80 浏览:634 次
//关于这块我总是弄不清,请大家指点一下.下面这样没有错.
public List<BookInfo> GetCurrentDataSet(int pageSize, int pageNo)
{
List<BookInfo> pageSet = BookInfos.Skip(pageSize*pageNo).Take(pageSize).ToList();
return pageSet;
|
z 主要是这句: BookInfos.Skip(pageSize*pageNo).Take(pageSize).ToList(); BookInfos在linq中是一个对象.代表数据库中的一张表,那么使用拓展方法Skip和Take来取得数据库中部分数据.那么实际上BookInfos.Skip(pageSize*pageNo).Take(pageSize)处理完成后返回的是一个IEnumerable<BookInfos>. 接下来在对这个IEnumerable<BookInfos>调用ToList()方法.根据数据库中筛选出来的数据迭代出一个List<BookInfos>.实现过程是创建一个List<BookInfos>. 然后foreach数据库中BookInfo表中每一行数据.new一个BookInfos对象.赋上值.最后add到List<BookInfos>中. 这样说.能方便你理解吗? |
|
5个月前 beyoung : 有字数限制吗?怎么问题少了一半... |
|
5个月前 beyoung : BookInfos.Select(c => new { c.Author,c.BookImg}).Skip(pageSize*pageNo).Take(pageSize).ToList(); 加上select就会提示类弄转换的错误. Cannot implicitly convert type 'System.Collections.Generic.List<AnonymousType#1>' to 'System.Collections.Generic.List<_2008Test.Models.BookInfo>' 我就是想返回记录集,除了返回List<bookinfo> 还可以返回什么类型呢? |
|
5个月前 beyoung : 谢谢deerchao,按你说的OK了,我又试了返回以下几种类型, public IEnumerable<BookInfo> GetCurrentDataSet(int pageSize, int pageNo) { IEnumerable<BookInfo> pageSet = BookInfos.Select(c => new BookInfo{BookName=c.BookName,Author=c.Author}).Skip(pageSize * (pageNo-1)).Take(pageSize).ToList(); //这里我还是用了.ToList();试了不用也可以,区别就在延迟加载吗? return pageSet; } 我试着返回Table<BookINfo>结果却又是类型转换的错误.想返回这个怎么写呢? 这句 BookInfos.Select(c => new BookAuthorAndImage { Author = c.Author, BookImg = c.BookImg}).Skip(pageSize*pageNo).Take(pageSize) 最直接返回的是这个IEnumerable<BookInfo>类型吗? 我就是想查询完后是什么类型我就返回什么类型, 就别转换类型了,这样效率会高点对吧. 问题比较多,达人辛苦了! |
|
5个月前 deerchao : 关于返回Table,这个我没有研究过. 后一个问题,我觉得直接返回IEnumerable<BookInfo>效率是最高的. 没错,用不用ToList()的区别就在于什么时候加载数据. |
|
5个月前 beyoung : 嗯,好的,谢谢! |