从XML前5名的记录用C# [英] select top 5 records from xml with C#

查看:150
本文介绍了从XML前5名的记录用C#的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好我想获取从asp.net XML文件中的前5名的记录。请告诉我如何能做到这一点我从XML获取数据这样

下面是我重复器标记我与在重复器

EVAL标签绑定我的数据

 < ASP:直放站ID =Repeater1=服务器>
        <&ItemTemplate中GT;
  <! - 内容 - >      < D​​IV CLASS =后>
        < D​​IV CLASS =右>
          &所述; H2>&下; A HREF =#>
              < ASP:标签ID =lbltitle=服务器文本='<%#的eval(称号)%>'>< / ASP:标签>< / A>< / H&GT ;
            < ASP:标签ID =lblcontent=服务器文本='<%#的eval(详细描述)%>'>< / ASP:标签>
        < / DIV>
        < D​​IV CLASS =左>          < p =类dateinfo>
          < ASP:标签ID =lbldate
                  =服务器文本='<%#的eval(DT)%GT;'>< / ASP:标签>
              <跨度>< ASP:标签ID =lblmnth=服务器文本='<%#的eval(MNT)%>'>< / ASP:标签>< / SPAN> &所述; / p>
          < D​​IV CLASS =后元>
            < H4>邮政信息< / H4>
            < UL>
              <李班=用户>< A HREF =#>欧文< / A>< /李>
              <李班=时间>< A HREF =#> 12:30 PM< / A>< /李>
              <李班=评论>
                  < ASP:标签ID =Label1的=服务器文本=标签>< / ASP:标签>
                  < ASP:超链接ID =HyperLink1=服务器NavigateUrl =〜/ PostComment.aspx>意见< / ASP:超链接>< /李>
              <李班=永久链接>< A HREF =#>&永久LT; / A>< /李>
            < / UL>
          < / DIV>
        < / DIV>
      < / DIV>
    < / ItemTemplate中>
        < / ASP:直放站>

C#code

  VAR DOC = XDocument.Load(使用Server.Mappath(〜/数据/ BlogContent.xml));
    VAR的结果= doc.Descendants(后),其中(x => x.Element(ID)!= NULL)。选择(X =>新建
    {
        ID = x.Element(ID)。价值,
        标题= x.Element(题)。价值,
        说明= x.Element(详细描述)。价值,
        DT = x.Element(DT)。价值,
        MNT = x.Element(MNT)。价值,
        年= x.Element(年)。价值
    })OrderByDescending(X =方式> x.id)。取(5);
    Repeater1.DataSource =结果;
    Repeater1.DataBind();


解决方案

尝试使用LINQ - 现在我们已经看到XML,增加了哪里,以便空帖

  VAR DOC = XDocument.Load(@C:\\ TEMP \\的test.xml);
VAR的结果= doc.Descendants(后),其中(x => x.Element(ID)!= NULL)。选择(X => X).OrderByDescending(X => int.Parse( 。x.Element(ID)值))采取(5);

如果你想走得更远一步,你可以从结果像这样创建一个匿名类型(我不得不拼写错误复制说明有它的工作)

  VAR DOC = XDocument.Load(使用Server.Mappath(〜/的test.xml));
VAR的结果= doc.Descendants(后),其中(x => x.Element(ID)!= NULL)。选择(X =>新建
{
    ID = x.Element(ID)。价值,
    标题= x.Element(题)。价值,
    说明= x.Element(详细描述)。价值,
    DT = x.Element(DT)。价值,
    MNT = x.Element(MNT)。价值,
    年= x.Element(年)。价值
})OrderByDescending(X =方式> x.id)。取(5);

Hello everyone i wanna to fetch the top 5 records from xml file in asp.net.. Please tell me how can i do that i am fetching the data like this from xml

Here is my repeator Markup i am binding my data with eval tag in repeator

<asp:Repeater ID="Repeater1" runat="server">
        <ItemTemplate>
  <!-- content -->

      <div class="post">
        <div class="right">
          <h2><a href="#">
              <asp:Label ID="lbltitle" runat="server" Text='<%#Eval("title ") %>'></asp:Label></a></h2>
            <asp:Label ID="lblcontent" runat="server" Text='<%#Eval("Discription") %>'></asp:Label>
        </div>
        <div class="left">

          <p class="dateinfo">
          <asp:Label ID="lbldate"
                  runat="server" Text='<%#Eval("DT") %>'></asp:Label>
              <span><asp:Label ID="lblmnth" runat="server" Text='<%#Eval("mnt") %>'></asp:Label></span></p>
          <div class="post-meta">
            <h4>Post Info</h4>
            <ul>
              <li class="user"><a href="#">Erwin</a></li>
              <li class="time"><a href="#">12:30 PM</a></li>
              <li class="comment">
                  <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
                  <asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl="~/PostComment.aspx"   >Comments</asp:HyperLink></li>
              <li class="permalink"><a href="#">Permalink</a></li>
            </ul>
          </div>
        </div>
      </div>


    </ItemTemplate>
        </asp:Repeater>

C# code

 var doc = XDocument.Load(Server.MapPath("~/Data/BlogContent.xml"));
    var result = doc.Descendants("post").Where(x => x.Element("id") != null).Select(x => new
    {
        id = x.Element("id").Value,
        title = x.Element("title").Value,
        Description = x.Element("Discription").Value,
        dt = x.Element("dt").Value,
        mnt = x.Element("mnt").Value,
        yr = x.Element("yr").Value
    }).OrderByDescending(x => x.id).Take(5);
    Repeater1.DataSource = result;
    Repeater1.DataBind();

解决方案

Try using LINQ - Having seen XML now, added a where to allow for null posts

var doc = XDocument.Load(@"c:\temp\test.xml");
var result = doc.Descendants("post").Where(x=>x.Element("id") != null).Select(x=>x).OrderByDescending(x=>int.Parse(x.Element("id").Value)).Take(5);

If you wanted to go a step further you could create an anonymous type from the results like so (I had to copy your spelling error in Description to have it work)

var doc = XDocument.Load(Server.MapPath("~/test.xml"));
var result = doc.Descendants("post").Where(x => x.Element("id") != null).Select(x => new
{
    id = x.Element("id").Value,
    title = x.Element("title").Value,
    Description = x.Element("Discription").Value,
    dt = x.Element("dt").Value,
    mnt = x.Element("mnt").Value,
    yr = x.Element("yr").Value
}).OrderByDescending(x => x.id).Take(5);

这篇关于从XML前5名的记录用C#的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆