加载和解析

  • Load方法从文件,URL,TextReader,XmlReader中创建X-DOM
  • Parse 方法从字符串中创建X-DOM
  1. XDocument doc=XDocument.Load(fullPath);
  2. XElement doc=XElement.Load(fullPath);
  3. XElement config=XElement.Parse(
  4. @"<configuration>
  5. <client enabled='true'>
  6. <timeout>30</timeout>
  7. </client>
  8. </configuration>");

相同的节点,属性不同,删除某一节点

  1. <Bin BinCode="4035" BinCount="3" BinQuality="PASS" BinDescription="Code 33" />
  2. <Bin BinCode="0000" BinCount="627" BinQuality="PASS" BinDescription="Pickable(Total_Pass)" />
  1. XDocument doc = XDocument.Load(path);
  2. XElement xmlInfo = doc.Element("Maps");
  3. XElement xmlInfo_Map = xmlInfo.Element("Map");
  4. XElement xmlInfo_Device = xmlInfo_Map.Element("Device");
  5. IEnumerable<XElement> xmlInfo_Bin = xmlInfo_Device.Elements("Bin");
  6. XElement xmlInfo_Data = xmlInfo_Device.Elements("Data");
  7. foreach (var xe in xmlInfo_Bin)
  8. {
  9. if (xe.Attribute("BinCode").Value == "4315")
  10. {
  11. xe.Remove();
  12. }
  13. }

获取某一节点的属性列表

  1. XDocument doc = XDocument.Load(path);
  2. XElement xmlInfo = doc.Element("Maps");
  3. XElement xmlInfo_Map = xmlInfo.Element("Map");
  4. XElement xmlInfo_Device = xmlInfo_Map.Element("Device");
  5. IEnumerable<XElement> xmlInfo_Bin = xmlInfo_Device.Elements("Bin");
  6. foreach (var xe in xmlInfo_Bin)
  7. {
  8. var binCode=xe.Attribute("BinCode").Value
  9. var binCount=xe.Attribute("BinCount").Value
  10. var BinQuality=xe.Attribute("BinQuality").Value
  11. var BinDescription=xe.Attribute("BinDescription").Value
  12. }
  1. XDocument doc = XDocument.Load(path);
  2. rootNodes.Elements("Bin").Where(el => el.Attribute("BinCode").Value.Equals("4315")).Remove();
  3. doc.Save(pathStr);
  1. //xml文件路径
  2. string ConfigFilePath = AppDomain.CurrentDomain.BaseDirectory + "Profile.config";
  3. //初始化XElement对象
  4. XElement rootNodes = XDocument.Load(ConfigFilePath).Root;
  5. rootNodes.Elements("add") //查询根节点下所有add子节点
  6. .Where(el =>el.Attribute("value").Value //Where方法中用于筛选复核条件的节点
  7. .Equals("d"))
  8. .First() //可以实现只删第一条
  9. .Remove();//删除节点
  10. //实现删除查询结果中指定索引的一个节点可以如下实现:
  11. rootNodes.Elements("add") //查询根节点下所有add子节点
  12. .Where(el =>el.Attribute("value").Value //Where方法中用于筛选复核条件的节点
  13. .Equals("d"))
  14. .Skip(10) //跳过指定的条数,这里可以实现删除指定的某一个节点
  15. .First() //跳过指定条数后获取剩余的第一个节点
  16. .Remove(); //删除节点
  17. rootNodes.Save(ConfigFilePath);//保存到文件

Linq To DataTable

  1. private void button1_Click(object sender, EventArgs e)
  2. {
  3. DataTable dt = new
  4. DataTable();
  5. dt.Columns.Add("Name", typeof(string));
  6. dt.Columns.Add("Age", typeof(int));
  7. dt.Columns.Add("Sex", typeof(string));
  8. dt.Rows.Add("z", 10, "male");
  9. dt.Rows.Add("z", 10, "male");
  10. dt.Rows.Add("x", 11, "male");
  11. dt.Rows.Add("y", 12, "male");
  12. //查询Name=‘z’的所有行
  13. var rows = dt.Select("Name='z'");
  14. //使用linq进行各种查询
  15. var q1 = (from d in dt.AsEnumerable()
  16. where d.Field("Age") > 10
  17. orderby d.Field("Name") descending
  18. select new Item //创建一个类,用于存储属性
  19. {
  20. Age = d.Field("Age"),
  21. Name = d.Field("Name")
  22. }
  23. );
  24. foreach (Item t
  25. in q1.ToList())
  26. {
  27. MessageBox.Show(t.Name + t.Age
  28. + t.Sex);
  29. }
  30. var q = q1.Where(p => p.Age
  31. > 10).ToList();//筛选年龄大于10的信息
  32. //获取datatable的总数
  33. string rowCount = dt.Compute("count(Name)", null).ToString();
  34. //计算某一列的值
  35. string sumCount = dt.Compute("sum(Age)", null).ToString();
  36. //取得某一列的平均值
  37. string avgValue = dt.Compute("avg(Age)", null).ToString();
  38. //取得最小值
  39. string minValue = dt.Compute("min(Age)", null).ToString();//max最大值
  40. //------------------多条件排序
  41. var list = from d in dt.AsEnumerable()
  42. orderby d.Field("Age") descending, d.Field("Name") ascending//
  43. new { t1 = d.Field("Age") , t2 = d.Field("Name") }
  44. select new
  45. {
  46. Name = d.Field("Name"),
  47. Age = d.Field("Age")
  48. };
  49. //--------------分组
  50. //按照Name分组,并且将Name对应的Age的值得和统计
  51. var group = from d in dt.AsEnumerable()
  52. group d by
  53. d.Field("Name") into m
  54. select new
  55. {
  56. Name = m.Key,//Name
  57. sum = m.Sum(n => n.Field("Age")),//和
  58. avg=m.Average(n=>n.Field("Age")),//平均值
  59. max=m.Max(n => n.Field("Age")),//最大值
  60. min=m.Min(n => n.Field("Age")),//最小值
  61. count=m.Count()//个数
  62. };
  63. foreach (var m in group.ToList())
  64. MessageBox.Show(m.Name + "," + m.sum
  65. +","+m.count);
  66. private void button1_Click(object sender, EventArgs e)
  67. {
  68. DataTable dt = new
  69. DataTable();
  70. dt.Columns.Add("Name", typeof(string));
  71. dt.Columns.Add("Age", typeof(int));
  72. dt.Columns.Add("Sex", typeof(string));
  73. dt.Rows.Add("z", 10, "male");
  74. dt.Rows.Add("z", 10, "male");
  75. dt.Rows.Add("x", 11, "male");
  76. dt.Rows.Add("y", 12, "male");
  77. //查询Name=‘z’的所有行
  78. var rows = dt.Select("Name='z'");
  79. //使用linq进行各种查询
  80. var q1 = (from d in dt.AsEnumerable()
  81. where d.Field("Age") > 10
  82. orderby d.Field("Name") descending
  83. select new Item //创建一个类,用于存储属性
  84. {
  85. Age = d.Field("Age"),
  86. Name = d.Field("Name")
  87. }
  88. );
  89. foreach (Item t
  90. in q1.ToList())
  91. {
  92. MessageBox.Show(t.Name + t.Age
  93. + t.Sex);
  94. }
  95. var q = q1.Where(p => p.Age
  96. > 10).ToList();//筛选年龄大于10的信息
  97. //获取datatable的总数
  98. string rowCount = dt.Compute("count(Name)", null).ToString();
  99. //计算某一列的值
  100. string sumCount = dt.Compute("sum(Age)", null).ToString();
  101. //取得某一列的平均值
  102. string avgValue = dt.Compute("avg(Age)", null).ToString();
  103. //取得最小值
  104. string minValue = dt.Compute("min(Age)", null).ToString();//max最大值
  105. //------------------多条件排序
  106. var list = from d in dt.AsEnumerable()
  107. orderby d.Field("Age") descending, d.Field("Name") ascending//
  108. new { t1 = d.Field("Age") , t2 = d.Field("Name") }
  109. select new
  110. {
  111. Name = d.Field("Name"),
  112. Age = d.Field("Age")
  113. };
  114. //--------------分组
  115. //按照Name分组,并且将Name对应的Age的值得和统计
  116. var group = from d in dt.AsEnumerable()
  117. group d by
  118. d.Field("Name") into m
  119. select new
  120. {
  121. Name = m.Key,//Name
  122. sum = m.Sum(n => n.Field("Age")),//和
  123. avg=m.Average(n=>n.Field("Age")),//平均值
  124. max=m.Max(n => n.Field("Age")),//最大值
  125. min=m.Min(n => n.Field("Age")),//最小值
  126. count=m.Count()//个数
  127. };
  128. foreach (var m in group.ToList())
  129. MessageBox.Show(m.Name + "," + m.sum
  130. +","+m.count);