2013-05-08 47 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