你的位置:首页 > ASP.net教程

[ASP.net教程]Linq学习总结2


概述:

linq to

主要对象:

1.XDocument:

  .Element("NodeName") 获得子节点XElement对象,XDoc下一般是根节点

  .Sava("

XElement xele =  xdocTypeDef.Element("root").Elements().Where(p => p.Attribute("Name").Value == strTopName).Single();

2.XElement:节点对象

  .Element("NodeName") 获得子节点XElement对象

  .Elements() 返回子节点集合

  .Elements("NodeName")返回名字是"NodeName"的子节点集合

  .Add(param[] obj) 增加的可以是多个节点或是属性

  .Remove() 将节点删除.

  .value 节点属性

3.XAttribute:属性对象

 

知道这些就可以在结合linq就可以对

 

 

下面是最近的小项目中为节点增加子节点和属性的部分源码:

 1     public static bool addElement(XElement xeleNode,string addEleType, string strContralName,string strContent) 2     { 3       XElement xeleChild = new XElement(addEleType); 4       xeleChild.Add(new XAttribute(strContralName,strContent)); 5       //判斷有木有此子控件 6       if ( xeleNode.Elements().Count() > 0 && xeleNode.Elements().Where(p => p.Attribute(strContralName).Value == strContent).Count() > 0) 7         return false; 8       xeleNode.Add(xeleChild); 9       10       return true;11       12     }13 14     public static bool addAttr(XElement xeleNode, Dictionary<string, string> dic)15     {16       bool flag = true;17       foreach (KeyValuePair<string, string> pair in dic)18       {19         if (xeleNode.Elements().Where(p => p.Attribute("Name").Value == pair.Key).Count() > 0)20         {21           flag = false;22           continue;23         }24         XElement xeleChild = new XElement("Attribute");25         xeleChild.Add(new XAttribute("Name",pair.Key.ToString()));26         xeleChild.Value = pair.Value.ToString();27         xeleNode.Add(xeleChild);28       }29       return flag;30     }

View Code

删除和修改节点

...//修改节点 XElement xele = XEleFirstNode.Elements().Where(p => p.Attribute("Name").Value == strContralName ).Single() as XElement;      xele = xele.Elements().Where(p => p.Attribute("Name").Value == strAttr).Single() as XElement;      xele.Value = strAttrDes;      xDoc.Save(strPath);...//del nodeif (MessageBox.Show("確定刪除?", "警告", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.No)        return;      foreach(object str in lBAtrributes.SelectedItems) //listbox mutiselect      {        string strAttr = str.ToString();        XElement xeleAttr = XEleSecondNode.Elements().Where(p => p.Attribute("Name").Value == strAttr).Single() as XElement;        xeleAttr.Remove();      }      xDoc.Save(strPath);


多多练习方能掌握.