加载和解析
- Load方法从文件,URL,TextReader,XmlReader中创建X-DOM
- Parse 方法从字符串中创建X-DOM
XDocument doc=XDocument.Load(fullPath);XElement doc=XElement.Load(fullPath);XElement config=XElement.Parse( @"<configuration> <client enabled='true'> <timeout>30</timeout> </client> </configuration>");
相同的节点,属性不同,删除某一节点
<Bin BinCode="4035" BinCount="3" BinQuality="PASS" BinDescription="Code 33" /><Bin BinCode="0000" BinCount="627" BinQuality="PASS" BinDescription="Pickable(Total_Pass)" />
XDocument doc = XDocument.Load(path);XElement xmlInfo = doc.Element("Maps");XElement xmlInfo_Map = xmlInfo.Element("Map");XElement xmlInfo_Device = xmlInfo_Map.Element("Device");IEnumerable<XElement> xmlInfo_Bin = xmlInfo_Device.Elements("Bin");XElement xmlInfo_Data = xmlInfo_Device.Elements("Data");foreach (var xe in xmlInfo_Bin){ if (xe.Attribute("BinCode").Value == "4315") { xe.Remove(); }}
获取某一节点的属性列表
XDocument doc = XDocument.Load(path);XElement xmlInfo = doc.Element("Maps");XElement xmlInfo_Map = xmlInfo.Element("Map");XElement xmlInfo_Device = xmlInfo_Map.Element("Device");IEnumerable<XElement> xmlInfo_Bin = xmlInfo_Device.Elements("Bin");foreach (var xe in xmlInfo_Bin){ var binCode=xe.Attribute("BinCode").Value; var binCount=xe.Attribute("BinCount").Value; var BinQuality=xe.Attribute("BinQuality").Value; var BinDescription=xe.Attribute("BinDescription").Value;}
XDocument doc = XDocument.Load(path);rootNodes.Elements("Bin").Where(el => el.Attribute("BinCode").Value.Equals("4315")).Remove();doc.Save(pathStr);
//xml文件路径string ConfigFilePath = AppDomain.CurrentDomain.BaseDirectory + "Profile.config";//初始化XElement对象XElement rootNodes = XDocument.Load(ConfigFilePath).Root;rootNodes.Elements("add") //查询根节点下所有add子节点 .Where(el =>el.Attribute("value").Value //Where方法中用于筛选复核条件的节点 .Equals("d")) .First() //可以实现只删第一条 .Remove();//删除节点//实现删除查询结果中指定索引的一个节点可以如下实现:rootNodes.Elements("add") //查询根节点下所有add子节点 .Where(el =>el.Attribute("value").Value //Where方法中用于筛选复核条件的节点 .Equals("d")) .Skip(10) //跳过指定的条数,这里可以实现删除指定的某一个节点 .First() //跳过指定条数后获取剩余的第一个节点 .Remove(); //删除节点rootNodes.Save(ConfigFilePath);//保存到文件
private void button1_Click(object sender, EventArgs e){ DataTable dt = new DataTable(); dt.Columns.Add("Name", typeof(string)); dt.Columns.Add("Age", typeof(int)); dt.Columns.Add("Sex", typeof(string)); dt.Rows.Add("z", 10, "male"); dt.Rows.Add("z", 10, "male"); dt.Rows.Add("x", 11, "male"); dt.Rows.Add("y", 12, "male");//查询Name=‘z’的所有行var rows = dt.Select("Name='z'");//使用linq进行各种查询var q1 = (from d in dt.AsEnumerable()where d.Field("Age") > 10orderby d.Field("Name") descendingselect new Item //创建一个类,用于存储属性{Age = d.Field("Age"),Name = d.Field("Name")});foreach (Item tin q1.ToList()){MessageBox.Show(t.Name + t.Age+ t.Sex);}var q = q1.Where(p => p.Age> 10).ToList();//筛选年龄大于10的信息//获取datatable的总数string rowCount = dt.Compute("count(Name)", null).ToString();//计算某一列的值string sumCount = dt.Compute("sum(Age)", null).ToString();//取得某一列的平均值string avgValue = dt.Compute("avg(Age)", null).ToString();//取得最小值string minValue = dt.Compute("min(Age)", null).ToString();//max最大值//------------------多条件排序var list = from d in dt.AsEnumerable()orderby d.Field("Age") descending, d.Field("Name") ascending//new { t1 = d.Field("Age") , t2 = d.Field("Name") }select new{Name = d.Field("Name"),Age = d.Field("Age")};//--------------分组//按照Name分组,并且将Name对应的Age的值得和统计var group = from d in dt.AsEnumerable()group d byd.Field("Name") into mselect new{Name = m.Key,//Namesum = m.Sum(n => n.Field("Age")),//和avg=m.Average(n=>n.Field("Age")),//平均值max=m.Max(n => n.Field("Age")),//最大值min=m.Min(n => n.Field("Age")),//最小值count=m.Count()//个数};foreach (var m in group.ToList())MessageBox.Show(m.Name + "," + m.sum+","+m.count);private void button1_Click(object sender, EventArgs e){DataTable dt = newDataTable();dt.Columns.Add("Name", typeof(string));dt.Columns.Add("Age", typeof(int));dt.Columns.Add("Sex", typeof(string));dt.Rows.Add("z", 10, "male");dt.Rows.Add("z", 10, "male");dt.Rows.Add("x", 11, "male");dt.Rows.Add("y", 12, "male");//查询Name=‘z’的所有行var rows = dt.Select("Name='z'");//使用linq进行各种查询var q1 = (from d in dt.AsEnumerable()where d.Field("Age") > 10orderby d.Field("Name") descendingselect new Item //创建一个类,用于存储属性{Age = d.Field("Age"),Name = d.Field("Name")});foreach (Item tin q1.ToList()){MessageBox.Show(t.Name + t.Age+ t.Sex);}var q = q1.Where(p => p.Age> 10).ToList();//筛选年龄大于10的信息//获取datatable的总数string rowCount = dt.Compute("count(Name)", null).ToString();//计算某一列的值string sumCount = dt.Compute("sum(Age)", null).ToString();//取得某一列的平均值string avgValue = dt.Compute("avg(Age)", null).ToString();//取得最小值string minValue = dt.Compute("min(Age)", null).ToString();//max最大值//------------------多条件排序var list = from d in dt.AsEnumerable()orderby d.Field("Age") descending, d.Field("Name") ascending//new { t1 = d.Field("Age") , t2 = d.Field("Name") }select new{Name = d.Field("Name"),Age = d.Field("Age")};//--------------分组//按照Name分组,并且将Name对应的Age的值得和统计var group = from d in dt.AsEnumerable()group d byd.Field("Name") into mselect new{Name = m.Key,//Namesum = m.Sum(n => n.Field("Age")),//和avg=m.Average(n=>n.Field("Age")),//平均值max=m.Max(n => n.Field("Age")),//最大值min=m.Min(n => n.Field("Age")),//最小值count=m.Count()//个数};foreach (var m in group.ToList())MessageBox.Show(m.Name + "," + m.sum+","+m.count);