XElement筛选排序问题
<Last-Modified>
  <Record>
    <Path>/kcs/scenes/TitleMain.swf</Path>
    <Time>Wed, 23 Apr 2014 07:37:36 GMT</Time>
    <Version>2.0.0</Version>
  </Record>
  <Record>
    <Path>/kcs/resources/swf/font.swf</Path>
    <Time>Wed, 23 Apr 2014 05:05:30 GMT</Time>
    <Version>2.0.0</Version>
  </Record>
  ...(一共7个<Record>)
</Last-Modified>

我需要对上面的XML内容根据Path元素对Record元素进行排序,并保存到文件。

首先是加载文件,没有任何问题

const string _RootName = "Last-Modified";
const string _ItemElm = "Record";
const string _ElmPath = "Path";
var fileXML = XDocument.Load(filepath);
fileXML.Root.Name = _RootName;

然后筛选和排序,最初我是想这样写的:

var elms = fileXML.Root
        .Elements(_ItemElm)
        .OrderBy(elm => elm.Element(_ElmPath).Value)
        .ToArray();
fileXML.Root.Elements().Remove();
fileXML.Root.Add(elms);

结果各种错误,只好一点一点拆开来,一步一步分析

首先是Elements()筛选,从这里就开始有问题了

var elms1 = fileXML.Root.Elements(_ItemElm);
Log.Note("fileXML.Root.Elements(_ItemElm): " + elms1.Count().ToString());

日志输出结果是:fileXML.Root.Elements(_ItemElm): 0

搞了半天没搞懂为什么返回0个结果。
我只好退而求其次,**用Where()筛选**了。

var elms2 = fileXML.Root.Elements().Where(elm => elm.Name == _ItemElm);
Log.Note("fileXML.Root.Elements().Where(_ItemElm): " + elms2.Count().ToString());

花了半天才发现Name属性是XName,不能直接和string比较,所以加上了ToString();

var elms2 = fileXML.Root.Elements().Where(elm => elm.Name.ToString() == _ItemElm);
Log.Note("fileXML.Root.Elements().Where(_ItemElm): " + elms2.Count().ToString());

用了ToString()之后,输出为:fileXML.Root.Elements().Where(_ItemElm):7

筛选完成之后是排序

var elms4 = elms2.OrderBy(elm => elm.Element(_ElmPath).Value);
var elms = elms4.ToArray();

然后就在ToArray()发生NullReferenceException异常了
然后我就不明白了,为什么OrderBy返回的是null。

所以总结一下,有两个地方不明白:

  • 一个是Elements(_ItemElm)为什么返回0个结果
  • 一个是OrderBy()为什么返回null

1个回答

use Descendants instead of Elements

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
XELEMENT 问题
[code=C#]rnusing System.Xml.Linq;rn string xmlpath= @"E:\jack.xml";rn XElement doc = XElement.Load(xmlpath);rn doc.SetValue(new XCData(""));rn[/code]rn[code=XML]rnrn123rn[/code]rn1 有问题 rnrn2 我想添加rn[code=XML]rnrn123rn211rn[/code]rn
排序-筛选-高级筛选
<p style="text-align:justify;">n <span>本次课程是以</span>Excel<span>在</span><span>HR</span><span>领域的应用为切入点,精心挑选了</span><span>Excel</span><span>中最常用、最核心的功能模块和关键技术,围绕“数据整理</span><span>-</span><span>数据分析</span><span>-</span><span>数据呈现”这一主线,循序渐进地引导学员找到方向、理清思路、系统全面地掌握</span><span>Excel</span><span>关键技术与使用思路、方法和技巧,提高工作效率。</span>n</p>
数字筛选排序问题
[img=https://img-bbs.csdn.net/upload/201503/31/1427781978_722926.png][/img]rn我要按第一列的数字从小到大重新排列,第一例相同,按第二例从小到大排,并且去掉逗号有大神给编一下这个程序rn
多表查询排序筛选问题
3个表:rnbumen:rn-----------------------------------------rn| bm | bms |rn-----------------------------------------rn| 01 | 生产基地 |rn-----------------------------------------rn| 02 | 生产部 |rn-----------------------------------------rn| 03 | 办公室 |rn-----------------------------------------rn| 04 | 资材部 |rnrnrndoc:rnrn-------------------------------------------------------------------rn| bh | xm | xb | bm |rn---------------------------------------------------------------------rn| 010001 | aaaa | 男 | 01 |rn-------------------------------------------------------------------rn| 010002 |bbbb | 女 | 01 |rn---------------------------------------------------------------------rn| 010044 | cccc | 男 | 01 |rn-------------------------------------------------------------rn| 010045 | dddd | 女 | 01 |rn| 020008 |eeee | 男 | 02 |rn----------------------------------------------------------------rn| 010031 | ffffff | 男 | 02 |rn------------------------------------------------------------------rn| 020011 | ggggg | 女 | 02 |rn----------------------------------------------------------------rn| 020012 | eeeee | 男 | 02 |rn-------------------------------------------------------------------rn| 07006 | wwwww | 女 | 07 |rn----------------------------------------------------------------rnrnsfdata:rnrn-------------------------------------------------------------rn| bh | ye | rq |rn-------------------------------------------------------------rn| 010001 | 3000 | 20041012 |rn-------------------------------------------------------------rn| 010001 | 3000 | 20041012 |rn-------------------------------------------------------------rn| 010001 | 2970 | 20041014 |rn-------------------------------------------------------------rn| 010031 | 1700 | 20050323 |rn-------------------------------------------------------------rn| 010031 | 1400 | 20050323 |rn-------------------------------------------------------------rn| 010031 | 600 | 20050331 |rn-------------------------------------------------------------rnrn要实现的查询是:查出xm或bh对应的ye,要求rq最大的条件下ye最小rnbh | xm | xb | bms | ye | rq rn010001 |aaaa |男 | 生产基地|2970 |20041014rn010031 |fffff |男 | 生产部 |600 |20041014rnrnrn数据量挺大的,用的ACCESS数据库,我写的SQL:rnrnselect * from (select sfdata.bh,xm,xb,bms,ye,rq from bumen,doc,sfdata where bumen.bm=doc.bm and sfdata.bh=doc.bh order by sfdata.bh asc,rq desc,ye asc)rnrn查不来的只是按要求排序了,并没有取出来每个编号的第一条记录,请问怎样消除重复的记录?rnrn或者有更好的方法实现呢?rn
XElement生成XML的问题
[code=C#]rn DataTable dt = dsPurchaseInfo.Tables[0];rn //int rows = dt.Rows.Count;rn int rows = 1;rn XElement rtnXml = new XElement("PURCHASE");rn for (int i = 0; i < rows; i++)rn rn DataRow row = dt.Rows[i];rn XElement tmpjl = new XElement("PURCHASE_INFO",rn new XElement("HOSPITAL_CODE", row["HOSPITAL_CODE"].ToString().Trim()),rn new XElement("PRODUCT_ID", row["PRODUCT_ID"].ToString().Trim()),rn new XElement("REQUEST_QTY", row["REQUEST_QTY"].ToString().Trim()),rn new XElement("SALE_ORG_CODE", row["SALE_ORG_CODE"].ToString().Trim())rn );rn rtnXml.Add(tmpjl);rn rn string PurchaseXml = rtnXml.ToString();rn textBox2.Text = PurchaseXml;rn[/code]rntextbox2.text显示的内容为:rnrnrn rn 370000737997rn 9370100000000rn 10000.00rn 37464rn rnrnrn但是问题出来了.rn对方webservice接收到解密后,服务出错.rn经过跟踪,找到问题,rn跟踪为:rntextbox2.textrnrn"\r\n \r\n 370000737997\r\n 9370100000000\r\n 10000.00\r\n 37464\r\n \r\n"rnrn中间发现有\r\n 字符,这个原因可能导致的问题,因为我用静态值形成以上格式,对方服务解析是可以的.正确rn如何避免呢?
筛选排序
django内的排序筛选功能
关于XElement
XElement初始化传入参数rn[code=C#]rn XElement e = new XElement("atom:category");rn[/code]rn运行时报错,大概意思是":"不可以包含在名字里面。怎么破?rn我要生成如下XML。有更好的办法能构建该XML也行。rn[code=XML]rnrn rn rn Elizabethrn Bennetrn Elizabeth Bennetrn rn Notesrn rn rn (206)555-1212 rn (206)555-1213 rn rn rn Mountain Viewrn 1600 Amphitheatre Pkwyrn CArn 94043rn United Statesrn 1600 Amphitheatre Pkwy Mountain View rn rnrn[/code]
这个LINQ的筛选和排序的问题
我有两个表,结构和数据分别如下:rn表A:rnID Namern2 张三rn3 李四rn4 王五rn5 刘六rnrn表B:rnID Agern7 20rn5 30rn10 25rnrn我想要的结果是查出A表中ID值没有被表B中包含的所有项的值,两字段的值要要取。即这里我想得出A表中ID为2,3,4,Name为张三,李四,王五这这三项两个字段的结果。请问用LINQ怎么写?
WPF XElement
XElement xDataTemplate = new XElement(ns + "DataTemplate",rn new XAttribute("xmlns:x", "http://schemas.microsoft.com/winfx/2006/xaml"),rn new XAttribute("xmlns:mc", "http://schemas.openxmlformats.org/markup-compatibility/2006"),rn new XAttribute("xmlns:d", "http://schemas.microsoft.com/expression/blend/2008"),rn new XElement(ns+"TextBlock", new XAttribute("Text", "Binding RelativeSource=RelativeSource Mode=FindAncestor, AncestorType=[u]x:Type[/u] DataGridRow, Path=Header")));rn主要是花横线的地方,需要引用http://schemas.microsoft.com/winfx/2006/xaml这个命名空间。请高手指点下,这句代码怎么写才对?
购物车删除 筛选 排序
var app = angular.module("myApp",[]);             app.controller("myCtrl",function($scope){                 $scope.shops = [{                     id:80,                     name:"iPhone",       
dataview筛选、排序无效
我使用dataview进行筛选、排序 但是没有效果。rn请大家看看是什么问题。rndv = ds.Tables[0].DefaultView;rndv.RowFilter = "装机容量 = '"+filter+"'"; 进行筛选无效rndv.Sort = sorter+" ASC"; 进行排序同样没有效果。rn不知道为什么,请大家帮助
一个筛选和排序的小问题
FILMNO FILENAME FEATUREDATE FEATURETIMErn 00117107 绑架冰激凌(数字) 2011-07-10 23:40rn 00117174 追鱼(数字) 2011-07-10 23:35rn 00116041 建国大业 2011-07-10 23:25rn 00117107 绑架冰激凌(数字) 2011-07-10 23:20rn 00117174 追鱼(数字) 2011-07-10 21:55rn 00117107 绑架冰激凌(数字) 2011-07-10 20:35rn 00117107 绑架冰激凌(数字 ) 2011-07-10 20:20rn 00116041 建国大业 2011-07-10 19:40rn 00117174 追鱼(数字) 2011-07-10 19:35rn 00117174 追鱼(数字) 2011-07-10 18:45rn 00117155 天秤(数字) 2011-07-10 18:15rn 00117107 绑架冰激凌(数字) 2011-07-10 16:50rn 00116041 建国大业 2011-07-10 16:35rn 05110514 阿凡达 2011-07-10 16:25rn 00117107 绑架冰激凌(数字) 2011-07-10 16:05rn 00117164 天下太忙(数字) 2011-07-10 15:50rn 00114520 落叶归根(数字) 2011-07-10 14:25rn我的sqlrnselect distinct f.filmno,f.filmname, f.featuredate,f.featuretimern from t0201_feature_app frn where 1=1 AND F.FEATUREDATE between '2011-07-10' and '2011-07-20' and f.appcode='TEST' order by f.featuredate,f.featuretime descrn我想让FILMNO FILENAME这列 不重复且能根据 featuredate和featuretime 排序 该怎么办呢
排序分组筛选详解
本课程全面介绍了sqlserver2008系统的体系架构和功能。本课程以章节的形式,共13章,逐步学习,内容包括sqlserver2008基础知识、t-sql语言、数据库和表、select查询、视图、索引和游标、存储过程与触发器、数据库的备份与还原、安全与权限等。
排序、筛选和统计
数据透视表是Excel的重要内容,是Excel交叉数据报表,是Excel分析数据的工具。之所以称为数据透视表,是因为它可以动态地改变布局,以便按照不同方式分析数据。所以它综合了排序。筛选。分类汇总的特点。n杨老师通过《Excel数据透视表实战视频课程【你学得会】》的课程从入门基础,常见应用,其他案例这三个方面着手,讲解包括数据透视表的组成,创建,使用,案例等,深刻地教你使用Excel数据透视表
商品筛选同类,排序
类淘宝一样选择类型筛选,所选类型将显示排列
难题:实体类的筛选和排序
是这样:rn我现在做一个项目,使用三层架构,使用实体传输数据,页面使用DataGridViw显示rn问题:如果实现DataGridView的筛选和排序?rn相关:以前我使用DataSet作为载体传输时,我使用DataView,可是使用实体类却不知道怎么办了
数值和文本的排序和筛选
有了统计的数据,就可以对产品进行数据分析,比如,我们要看分析那个产品的利润最高,销售前10名的排行榜,那地区销售最好,无疑,用数据透视表可以快速的实现。
06商品筛选和排序
系统介绍使用Django框架开发Web应用程序,当然,依然水煮风格
js-css 多项筛选和排序
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> </head> <body> <select id="chooseLine"> <option value="all" selected>全部状态</option> <option value
三重排序筛选
http://bbs.csdn.net/topics/390485557 的附件
Oracle 筛选和排序
筛选: 在我们平时的数据查询处理中 数据重复是不可避免的,应为一张表以上(或者是视图)要进行查询 就会产生笛卡尔积(假设有两个集合 a b 且 a b没有交集, 两个集合的乘积就是卡积, 且 ab ≠ba)这个时候 筛选语句就很有用了 过滤掉不需要的数据,留下有用的 Where 是小网直接从数据表里捞出符合大小的鱼(数据) Having 就比较厉害了,他是从捞出来的鱼里面再捞一遍再次筛选我想要的...
中继器的排序和筛选
文章目录排序准备工作添加排序以身高排序为例以姓名拼音排序为例移除排序以序号排序为例筛选 排序 准备工作 添加所需元件; 添加中继器,并命名; 设置中继器加载时的交互(表格从EXCEL复制粘贴); 添加排序 以身高排序为例 以姓名拼音排序为例 另外设置姓名拼音列,但不为其设置加载交互,排序时按拼音列排序。 移除排序 以序号排序为例 筛选 为各选择框命名; 添加筛选。 以下以综合...
BindingSource的筛选和排序
题目如下:rnStudent rnrnPublic string Sex;rnrnIlist students=new List();rnBindingSource1.DataSource=students;rnDataGridView1.DataSource=BindingSource1rn我的问题是:rn如果对BindingSource对Student的Sex进行排序和筛选?我试过BindingSource.Sort="Sex desc";和BindingSource.Filter="Sex ='男'",然后用bindingSource.ResetBindings(false);进行刷新,可是不管用。
关于排序筛选的算法
我有一个文本文件叫result.txt,里面存储的东西是例如:021 135 538 358 这样的字符串中间以空格分开,我想做的是首先将每个字符串从大到小排序得到012 135 358 358,然后将相同的数删除,最后得到012 135 358并将她们存盘。这样一个算法该怎么写呢?请高手指教。
List元素筛选和排序
需求如下:rn 一个装有若干worker对象的List如rn workerList [worker1,worker2,worker3,worker4,worker5,workeer6]rnrn 将所有的worker安排工作时间表如:rnrn 周一:worker1,worker2,worker3,worker4 workerListMonrn 周二: worker1,worker3,worker4,worker5 workerListTuesrn 周三: worker1,worker2,worker4,worker5 workerListWedrn 周四: worker3,worker4,worker5,worker6 workerListThursrn 周五:worker1,worker2,worker3,worker6 workerListFrirnrn 想将worker按照工作天数由多到少进行排序,并且能够得出工作天数最长的worker的工作日。rn rn 个人想法是通过遍历workerList中的每个worker,再到每个工作日list中验证元素是否存在,若存在则计数加1,不知这种方式执行效率是否有问题,而且如何确定workder的工作日是哪几天?rnrnrn
数据的排序和筛选
内容涵盖excel基础延深至数据透视表、函数运用数据处理,适合职场管理层人员或需要用表格、图表、函数分析数据人员以及想系统进行Excel数据处理学习的人学习。
4位数排序筛选
关于200个4位数的排序筛选void jsSort() { int i,j; int temp; for(i=0;i<199;i++) for(j=i+1;j<200;j++) { if(aa[i]00>aa[j]00) { temp=aa[i]; aa[i]=aa[j]; aa[j]=temp; } else if(aa[i]00==aa[j]00) if(aa[i]<aa[j]) { temp=aa[i]; aa[i]=aa[j]; aa[j]=temp; } } for(i=0;i<10;i++) bb[i]=aa[i]; }
ASP 数组筛选排序
要求如下rn将价数组数值从高到低依次排列,取出数值最高的前三项项号,如果数值最高的前三项中有“二”项,则将其去除,用得数值高的第四项项号替补,然后将取得的三项项号按数字由小到大的顺序进行组合rnrn数组如下rn1=>14, 2=>11, 3=>3, 4=>10, 5=>12, 6=>7, 7=>6, 8=>11rnrnrn最大的数值的前三项值是 14 12 10 (由于11有两项是相同的所以取第四项4) 他们的项号是 1 5 4 然后项号从低到高排序 145 就是我要的结果 ASP不能加键所以 应该如何实现?
orderBy排序与筛选的例子
2)&lt;!DOCTYPE html&gt;&lt;html ng-app="filterApp"&gt; &lt;head&gt; &lt;meta charset="UTF-8"&gt; &lt;title&gt;&lt;/title&gt; &lt;/head&gt; &lt;body ng-controller...
js对象数组的筛选和排序
今天在项目中需要mock数据,而且还要实现点击排序和筛选的功能。 关于数据的筛选我立马想到用数组的filter方法实现,其中type是外面传入的类型参数: let arrayData = [....这里是mock的数据...]; let type = params.type; let data = arrayData.filter(item=&gt; item.type === type) 数...
json的排序和筛选
json的排序和筛选
XmlNode节点下添加XElement
现有一个XELement,如下rnrn rn a9fc6479-5fa0-4a26-b872-c2b475c2aae3rn 7rn rnrnrn如何将其全部添加到XmlNode对象的Xml文件中去?rnrn比如XmlNode为装在了一下Xml文件rnrn rn rn rn rn rn rn asdrfarn rnrnrn需要将上面的XElement对象插入到线面XmlNode对象中的节点下,成为如下形式:rnrn rn rn rn rn rn rn asdrfarn rn rn a9fc6479-5fa0-4a26-b872-c2b475c2aae3rn 7rn rn rn [/color]
关于SQL语句的筛选排序问题
我现在我有一个表A,里面有字段国家标准、行业标准、国际标准等,我现在要实现的效果是一条SQL语句首先查出来的是国家标准,其次是其他的标准,请各位大侠帮帮忙吧。。。
结果集排序 和 WHERE条件筛选顺序 问题
1、结果集排序rn select * from table_arn 在没有用order by来排序的情况下,结果结是怎么排序的?rn2、WHERE条件筛选顺序rn select * from table_a where [la]>1 and [lb]='X'rn 是先筛选条件 [la]>1 还是 [lb]='X'rnrnrn本人比较菜,第一次上来提问,多谢指教!
仿淘宝搜索排序筛选
仿电商淘宝的搜索排序,axure原型设计,仅供个人下载学习使用
Linq(2.分组、排序、筛选)
筛选查询姓氏为A开头的冠军赛车手,并按胜利场数进行倒序排列。 //得到所有冠军赛车手 IList<Racer> champions_racers = Formula1.GetChampions(); //linq查询 var query = from r in champions_racers
ListView带字母的筛选排序
ListView展示数据是直接通过字母快速查找
[oeasy]excel15-数据筛选排序
教你玩转excel教程
C# DataView数据筛选与排序
一、 直接在已有数据中筛选;不必重新检索数据   (1)查询两张表的数据   /// /// 加载所有的数据 /// private void FillDataStudent() { //sql语句 sql = new StringBuilder();
jquery表格排序和筛选表
jquery表格排序和筛选表
相关热词 c#检测非法字符 c#双屏截图 c#中怎么关闭线程 c# 显示服务器上的图片 api嵌入窗口 c# c# 控制网页 c# encrypt c#微信网页版登录 c# login 居中 c# 考试软件