小弟在从SQL 2008里面导出XML的跟踪日志,想用LINQ TO XML处理下,直接绑到.NET页面,看看是哪个语句的读取量最大:
1.<RootEvents>下面有2个不同内容的Event子元素
2.我想查询RootEvents子元素的name属性是"RPC:Completed"的Event元素集合,并且按照<Column id="16" name="Reads">5</Column>的Reads值排序
XML结构如下:<?xml version="1.0" encoding="utf-16"?>
<RootEvents>
<Event id="10" name="LogOut">
<Column id="11" name="LoginName">sa</Column>
</Event>
<Event id="10" name="RPC:Completed">
<Column id="11" name="LoginName">sa</Column>
<Column id="15" name="EndTime">2012-11-14T12:00:37.057+08:00</Column>
<Column id="2" name="BinaryData">000000</Column>
<Column id="10" name="ApplicationName">.Net SqlClient Data Provider</Column>
<Column id="12" name="SPID">54</Column>
<Column id="14" name="StartTime">2012-11-14T12:00:37.05+08:00</Column>
<Column id="16" name="Reads">5</Column>
<Column id="18" name="CPU">0</Column>
<Column id="1" name="TextData">exec ProductGroup_SelectByTopAndCondition @Top=0,@Condition=N'v.ParentCode=''1402''',@OrderBy=N'v.Code'</Column>
<Column id="9" name="ClientProcessID">1524</Column>
<Column id="13" name="Duration">5037</Column>
<Column id="17" name="Writes">0</Column>
</Event>
</RootEvents>---------------
下面是我自己写的恶心代码,求鞭策、求指点:protected void DBView()
{
string xmlPath = HttpContext.Current.Server.MapPath("~/App_Data/profile_1.xml");
var xDoc = XDocument.Load(xmlPath);
var rootObj = xDoc.Descendants("Events");
var modelList = from a in rootObj
where a.Element("Event").Attribute("name").Value == "RPC:Completed"
orderby a.Element("Event").Attribute("Reads").Value descending
select new
{
Reads = a.Elements("Event").Elements("Column").Attribute("Reads").Value,
TextData = a.Elements("Event").Elements("Column").Attribute("TextData").Value
};
GridView1.DataSource = modelList;
GridView1.DataBind(); }----------------
1.<RootEvents>下面有2个不同内容的Event子元素
2.我想查询RootEvents子元素的name属性是"RPC:Completed"的Event元素集合,并且按照<Column id="16" name="Reads">5</Column>的Reads值排序
XML结构如下:<?xml version="1.0" encoding="utf-16"?>
<RootEvents>
<Event id="10" name="LogOut">
<Column id="11" name="LoginName">sa</Column>
</Event>
<Event id="10" name="RPC:Completed">
<Column id="11" name="LoginName">sa</Column>
<Column id="15" name="EndTime">2012-11-14T12:00:37.057+08:00</Column>
<Column id="2" name="BinaryData">000000</Column>
<Column id="10" name="ApplicationName">.Net SqlClient Data Provider</Column>
<Column id="12" name="SPID">54</Column>
<Column id="14" name="StartTime">2012-11-14T12:00:37.05+08:00</Column>
<Column id="16" name="Reads">5</Column>
<Column id="18" name="CPU">0</Column>
<Column id="1" name="TextData">exec ProductGroup_SelectByTopAndCondition @Top=0,@Condition=N'v.ParentCode=''1402''',@OrderBy=N'v.Code'</Column>
<Column id="9" name="ClientProcessID">1524</Column>
<Column id="13" name="Duration">5037</Column>
<Column id="17" name="Writes">0</Column>
</Event>
</RootEvents>---------------
下面是我自己写的恶心代码,求鞭策、求指点:protected void DBView()
{
string xmlPath = HttpContext.Current.Server.MapPath("~/App_Data/profile_1.xml");
var xDoc = XDocument.Load(xmlPath);
var rootObj = xDoc.Descendants("Events");
var modelList = from a in rootObj
where a.Element("Event").Attribute("name").Value == "RPC:Completed"
orderby a.Element("Event").Attribute("Reads").Value descending
select new
{
Reads = a.Elements("Event").Elements("Column").Attribute("Reads").Value,
TextData = a.Elements("Event").Elements("Column").Attribute("TextData").Value
};
GridView1.DataSource = modelList;
GridView1.DataBind(); }----------------
解决方案 »
- ASP.NET 如何判断某一时间是在特定的时间段
- ASP.NET使用用户控件的时候前面有空格,怎么把空格去掉
- 电脑上装了studio.net2005,现在不能运行.net1.1的网站,错误如下,请高手帮忙
- Table 排序
- asp.net和asp连接的问题
- 取出DATETABLE中满足条件的行?
- datagrid默认分页出问题??奇怪的很
- gridview 删除提示
- 报错“Server Error in '/' Application.”
- 在Asp.net 用C#中写一个方法里面用到SqlParameter,要用到一个时间格式的参数,那么这个参数要怎么写
- 内容页刷新母版页不刷新问题
- 对检索出来的数据进行操作,操作完成后,后退到原来的页面,显示的是所有的数据,如何让页面保留检索条件呢?
var query=from x in xml.Descendants("Event")
where x.Attribute("name").Value=="RPC:Completed"
let all= x.Elements("Column")
orderby int.Parse(all.First(a=>a.Attribute("name").Value=="Reads").Value) descending
select new
{
Reads = all.First(a=>a.Attribute("name").Value=="Reads").Value,
TextData = all.First(a=>a.Attribute("name").Value=="TextData").Value
};
可是我不太明白这句用意何在:let all = x.Elements("Column")//这个let在这段语句中用处是什么,筛选条件吗?