从XML前5名的记录用C# [英] select top 5 records from xml with C#
本文介绍了从XML前5名的记录用C#的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
大家好我想获取从asp.net XML文件中的前5名的记录。请告诉我如何能做到这一点我从XML获取数据这样
下面是我重复器标记我与在重复器
EVAL标签绑定我的数据 < ASP:直放站ID =Repeater1=服务器>
<&ItemTemplate中GT;
<! - 内容 - > < DIV CLASS =后>
< DIV CLASS =右>
&所述; H2>&下; A HREF =#>
< ASP:标签ID =lbltitle=服务器文本='<%#的eval(称号)%>'>< / ASP:标签>< / A>< / H&GT ;
< ASP:标签ID =lblcontent=服务器文本='<%#的eval(详细描述)%>'>< / ASP:标签>
< / DIV>
< DIV CLASS =左> < p =类dateinfo>
< ASP:标签ID =lbldate
=服务器文本='<%#的eval(DT)%GT;'>< / ASP:标签>
<跨度>< ASP:标签ID =lblmnth=服务器文本='<%#的eval(MNT)%>'>< / ASP:标签>< / SPAN> &所述; / p>
< DIV 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屋!
查看全文