运用LINQ
LINQ TO XML
<?xml version="1.0"?>
<configuration>
<account>
<type name="xxxxx">
<target>client</target>
<from display="xxxxx">xxxx@xxx.com</from>
<to>xxxx@xxx.com</to>
<cc></cc>
</type>
<type name="xxxx">
<target>client</target>
<from>xxxxx@xxx.com</from>
<to>xxxxx@xxx.com</to>
<cc></cc>
</type>
</account><configuration>
string path = Path.Combine(serverMap, "Config\\EmailAccount.xml"); XDocument xdoc = XDocument.Parse(File.ReadAllText(path)); var account = from c in xdoc.Descendants("account").Descendants("type") where c.Attribute("name").Value == type select new { Type=c.Attribute("name").Value, Target = c.Descendants("target").First().Value, From = c.Descendants("from").First().Value, FromDisplay = c.Descendants("from").Attributes("display").Count()==0 ?c.Descendants("from").First().Value:c.Descendants("from").Attributes("display").FirstOrDefault().Value, To = c.Descendants("to").First().Value, Cc = c.Descendants("cc").First().Value };
LINQ TO DataTable
DataTable dt=new DataTable(); dt.Columns.Add("SerialNumber"); dt.Columns.Add("CreateTime"); dt.Columns.Add("A"); dt.Columns.Add("B"); dt.Columns.Add("C"); DataRow dn=dt.NewRow(); dn[0] = "xxxx65"; dn[1]="1999-1-1"; dn[2]=0; dn[3]=0; dn[4]=0; dt.Rows.Add(dn); dn=dt.NewRow(); dn[0] = "xxxx40"; dn[1]="1999-1-1"; dn[2]=0; dn[3]=0; dn[4]=0; dt.Rows.Add(dn); dn=dt.NewRow(); dn[0] = "xxxx65"; dn[1]="1999-1-2"; dn[2]=0; dn[3]=0; dn[4]=0; dt.Rows.Add(dn); //var ss = from c in dt.AsEnumerable() // group c by new { // A=c.Field<string>("CreateTime"), // B = c.Field<string>("SerialNumber") // } // into g // select new { g.Key,Count=g.Count(),g }; var serialNumbers = new List<string> { "xxxx40", "xxxx65" }; var ss = from c in dt.AsEnumerable() group c by c.Field<string>("CreateTime") into g where g.Count() != serialNumbers.Count() select new { g.Key, InsertSerialNumber = string.Join(",", serialNumbers.Except(g.Select(n => n.Field<string>("SerialNumber"))).ToArray()) }; foreach(var s in ss) { foreach (var item in s.InsertSerialNumber.Split(',')) { DataRow insert = dt.NewRow(); insert[0] = item; insert[1] = s.Key; insert[2] = 0; insert[3] = 0; insert[4] = 0; dt.Rows.Add(insert); } } }