运用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); } } }

 

        

posted @ 2012-05-19 17:02  Yu  阅读(380)  评论(0编辑  收藏  举报