我有个string bname="XXXXXX"
我把这个名字放到XML数据库里去对比看看有木有一样的名字
代码如下
 DataTable dt = xmlhelp.GetXml(path).Tables["rname"];
 if (dt != null)
 {
    bool ishave = true;                        
    for (int j = 0; j < dt.Rows.Count; j++)
   {
     string name = dt.Rows[j]["name"].ToString();
     if (bname == name)
    {
      ishave = false;
      myfile(bname);//如果是重复的就把Bname写到文本里去
      break;
    }
我现在是用for来判断名字的唯一性 如果用linq来判断代码应该怎么写那 请高手指点 问过了好多人了 都不知道                                    
 

解决方案 »

  1.   


                var xml = from x in XElement.Load(@"E:\all.xml").Descendants() select new { name = x.Name };
                bool flag = false;
                foreach (var x in xml.Distinct())
                {
                    if (x.name == "Student")
                    {
                        flag = true;
                        break;
                    }
                }
                Console.WriteLine(flag);
      

  2.   


    var xml = from x in XElement.Load(@"E:\all.xml").Descendants() where x.name == bname select x;
    if(xml.Count()>1)
    {
    myfile(bname);
    }
      

  3.   

    var xml = from x in  XmlElement.Load(@"E:\all.xml").Descendants() select new { name = x.Name };
    这句好像有问题 没有load的属性 
      

  4.   


    var xml = from x in XElement.Load(@"E:\all.xml").Descendants() where x.name == bname select x;
    if(xml.Count()>1)
    {
    myfile(bname);
    }xml.Count()好像木有这个值啊只有xml.Count<>
      

  5.   

    重新写了一下
    之前没用过LINQ TO XML
    见笑了
     XElement xmlFile = XElement.Load(path);
            var result = from x in xmlFile.Descendants("rname")
                      where x.Element("name").Value == "bname "
                      select x;
    if(result.Count()>1)
    {
    myfile(bname);
    }
    你可以看一下你有没有 using System.Xml.Linq