首页 新闻 会员 周边 捐助

关于linq的返回类型

0
悬赏园豆:80 [已解决问题] 解决于 2008-02-03 16:41
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes"><FONT color=#008000>//关于这块我总是弄不清,请大家指点一下.下面这样没有错.</FONT>&nbsp;</SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes">public</SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes"> <SPAN style="COLOR: #2b91af">List</SPAN>&lt;<SPAN style="COLOR: #2b91af">BookInfo</SPAN>&gt; GetCurrentDataSet(<SPAN style="COLOR: blue">int</SPAN> pageSize, <SPAN style="COLOR: blue">int</SPAN> pageNo)<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN><SPAN style="mso-spacerun: yes">&nbsp;</SPAN><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN></SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: #2b91af; FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes">List</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes">&lt;<SPAN style="COLOR: #2b91af">BookInfo</SPAN>&gt; pageSet = BookInfos.Skip(pageSize*pageNo).Take(pageSize).ToList();<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp; </SPAN><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="mso-spacerun: yes">&nbsp;</SPAN><SPAN style="mso-spacerun: yes">&nbsp;</SPAN><SPAN style="COLOR: blue">return</SPAN> pageSet;<o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&
蝗虫的大腿的主页 蝗虫的大腿 | 初学一级 | 园豆:22
提问于:2008-02-01 00:23
< >
分享
最佳答案
0
VS知道.当然,其实是csc知道. 编译能成功就没错. 你补充的那个是因为 new { c.Author,c.BookImg} 这个表达式创建的是一个匿名类型的对象,而不是BookInfo. 匿名类型不能作为方法的返回值的类型.你可以这样做: BookInfos.Select(c => new BookInfo { Author = c.Author, BookImg = c.BookImg}).Skip(pageSize*pageNo).Take(pageSize).ToList() 这样返回的就是List<BookInfo>了. 也可以创建一个新的类型: struct BookAuthorAndImage { public string Author { get;set; } public sting BookImage { get;set; } } 然后这样: BookInfos.Select(c => new BookAuthorAndImage { Author = c.Author, BookImg = c.BookImg}).Skip(pageSize*pageNo).Take(pageSize).ToList() 并把方法的返回类型改为List<BookAuthorAndImage>.
deerchao | 大侠五级 |园豆:8367 | 2008-02-01 01:23
其他回答(2)
0
z
wsky | 园豆:558 (小虾三级) | 2008-02-01 17:52
0
主要是这句: 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>中. 这样说.能方便你理解吗?
Kenneth Byron | 园豆:570 (小虾三级) | 2008-02-02 09:48
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册