<?xml version="1.0" encoding="utf-8" ?>
<Configuration>
<ModulePermit>
<Mast Code="S001" Name="系统维护" Index="1">
<Sub Code="S00101" Name="地区管理" Index="1"></Sub>
<Sub Code="S00102" Name="管理员管理" Index="2"></Sub>
</Mast>
<Mast Code="S002" Name="业务管理" Index="2">
<Sub Code="S00201" Name="收货管理" Index="1"></Sub>
<Sub Code="S00202" Name="发货管理" Index="2"></Sub>
<Sub Code="S00203" Name="报表管理" Index="3"></Sub>
</Mast>
</ModulePermit>
</Configuration>System.Xml.XmlNodeList list = xml.SelectNodes("Configuration/ModulePermit/Mast");
我把这些xml数据全部读进DataTable了,但是应该怎样按照Index进行排序呢?
<Configuration>
<ModulePermit>
<Mast Code="S001" Name="系统维护" Index="1">
<Sub Code="S00101" Name="地区管理" Index="1"></Sub>
<Sub Code="S00102" Name="管理员管理" Index="2"></Sub>
</Mast>
<Mast Code="S002" Name="业务管理" Index="2">
<Sub Code="S00201" Name="收货管理" Index="1"></Sub>
<Sub Code="S00202" Name="发货管理" Index="2"></Sub>
<Sub Code="S00203" Name="报表管理" Index="3"></Sub>
</Mast>
</ModulePermit>
</Configuration>System.Xml.XmlNodeList list = xml.SelectNodes("Configuration/ModulePermit/Mast");
我把这些xml数据全部读进DataTable了,但是应该怎样按照Index进行排序呢?
参考:XElement root = XElement.Load("Data.xml");
IEnumerable<decimal> prices =
from el in root.Elements("Data")
let price = (decimal)el.Element("Price")
orderby price
select price;
foreach (decimal el in prices)
Console.WriteLine(el);
<Configuration>
<ModulePermit>
<Mast Code=""S001"" Name=""系统维护"" Index=""1"">
<Sub Code=""S00101"" Name=""地区管理"" Index=""1""></Sub>
<Sub Code=""S00102"" Name=""管理员管理"" Index=""2""></Sub>
</Mast>
<Mast Code=""S002"" Name=""业务管理"" Index=""2"">
<Sub Code=""S00201"" Name=""收货管理"" Index=""1""></Sub>
<Sub Code=""S00202"" Name=""发货管理"" Index=""2""></Sub>
<Sub Code=""S00203"" Name=""报表管理"" Index=""3""></Sub>
</Mast>
</ModulePermit>
</Configuration>"; XDocument doc = XDocument.Parse(xml);
var Query = from D in doc.Element("Configuration").Element("ModulePermit").DescendantNodes()
orderby XElement.Parse(D.ToString()).Attribute("Index").Value
select new
{
Code = XElement.Parse(D.ToString()).Attribute("Code").Value,
Name = XElement.Parse(D.ToString()).Attribute("Code").Value,
Index = XElement.Parse(D.ToString()).Attribute("Index").Value
};
foreach (var v in Query)
{
Console.WriteLine("Code={0} Name={1} Inex={2}",v.Code,v.Name,v.Index);
}
/*
Code=S001 Name=S001 Inex=1
Code=S00101 Name=S00101 Inex=1
Code=S00201 Name=S00201 Inex=1
Code=S00102 Name=S00102 Inex=2
Code=S002 Name=S002 Inex=2
Code=S00202 Name=S00202 Inex=2
Code=S00203 Name=S00203 Inex=3
*/
var Query = from D in doc.Element("Configuration").Element("ModulePermit").DescendantNodes()
let Index = XElement.Parse(D.ToString()).Attribute("Index").Value
let Code = XElement.Parse(D.ToString()).Attribute("Code").Value
orderby Index, Code
select new
{
Code = Code,
Name = XElement.Parse(D.ToString()).Attribute("Name").Value,
Index = Index
};