2013-05-08 43 views
2

我有一个函数在我的web服务以检索所有的数据库发布,和我的代码做工精细:检索10条记录中的LINQ与加入

[WebMethod] 
    public XmlDataDocument return_FanWall_Posts() 
    { 
     var reportXmlItems = from y in db.fanwalls 
          join x in db.users on y.user_id equals x.id 
          orderby y.id descending 
          select new XElement("All_Fanwall", 
            new XElement("post_ID", y.id), 
            new XElement("post_image", y.pic), 
            new XElement("post", y.comment), 
            new XElement("post_date", y.date) 
            new XElement("User_Name", x.user_name), 
            new XElement("User_image", x.pic_url) 
          ); 

     var reportXml = new XElement("All_Fanwall", reportXmlItems); 
     XmlDataDocument m = new XmlDataDocument(); 
     m.LoadXml(reportXml.ToString()); 
     return m; 
    } 

现在,我需要找回前10条记录,然后接下来的10 ,而这个代码不工作的结果,从表中检索所有记录:

[WebMethod] 
    public XmlDataDocument return_FanWall_Posts(int iBeginRowIndex, int iMaximumRows) 
    { 
     var reportXmlItems = from y in db.fanwalls 
          join x in db.users on y.user_id equals x.id 
          orderby y.id descending 
          select new XElement("All_Fanwall", 
            new XElement("post_ID", y.id), 
            new XElement("post_image", y.pic), 
            new XElement("post", y.comment), 
            new XElement("post_date", y.date) 
            new XElement("User_Name", x.user_name), 
            new XElement("User_image", x.pic_url) 
          ); 

     reportXmlItems.Skip(iBeginRowIndex).Take(iMaximumRows); 
     var reportXml = new XElement("All_Fanwall", reportXmlItems); 
     XmlDataDocument m = new XmlDataDocument(); 
     m.LoadXml(reportXml.ToString()); 
     return m; 
    } 

回答

2

Parenthesise查询和触杀Skip()Take()调用到,与其...

var reportXmlItems = (from y in db.fanwalls 
         join x in db.users on y.user_id equals x.id 
         orderby y.id descending 
         select new XElement("All_Fanwall", 
           new XElement("post_ID", y.id), 
           new XElement("post_image", y.pic), 
           new XElement("post", y.comment), 
           new XElement("post_date", y.date), 
           new XElement("User_Name", x.user_name), 
           new XElement("User_image", x.pic_url) 
          ) 
        ).Skip(iBeginRowIndex).Take(iMaximumRows); 
+1

它的工作感谢davmos为你的帮助:) – 2013-05-08 11:53:04

+0

不客气:) – davmos 2013-05-08 13:48:30