加载和解析
- 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") > 10
orderby d.Field("Name") descending
select new Item //创建一个类,用于存储属性
{
Age = d.Field("Age"),
Name = d.Field("Name")
}
);
foreach (Item t
in 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 by
d.Field("Name") into m
select new
{
Name = m.Key,//Name
sum = 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 = 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") > 10
orderby d.Field("Name") descending
select new Item //创建一个类,用于存储属性
{
Age = d.Field("Age"),
Name = d.Field("Name")
}
);
foreach (Item t
in 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 by
d.Field("Name") into m
select new
{
Name = m.Key,//Name
sum = 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);