日期:2014-05-20  浏览次数:20726 次

linq 出错 如何解决.
以下代码 没有查询出想要的结果 如何修改

想要查询的内容是 <Layout direction="Vertical"> 这个小结


代码部分

  XName Form = "Form", Id = "id", Control = "Control", Layout = "Layout", direction = "direction", Location = "Location", x = "x", y = "y", Size="Size",width = "width", height = "height";
  string FormID = "FormLogin", ControlID = "panelMain", Direction = "Vertical";

  //IEnumerable<string> partNos = Elements
  var LocationList = from Forms in Root.Elements(Form)
  where 
  ( (string)Forms.Attribute(Id) == FormID &&
  (string)Forms.Element(Control).Attribute(Id) == ControlID &&
   
  (string)Forms.Element(Control).Element(Layout).Attribute(direction) == Direction 
  )
  select new{
  X =(int)Forms.Element(Control).Element(Layout).Element(Location).Element(x),
  Y =(int)Forms.Element(Control).Element(Layout).Element(Location).Element(y),
  Width = (int)Forms.Element(Control).Element(Layout).Element(Size).Element(width),
  Height = (int)Forms.Element(Control).Element(Layout).Element(Size).Element(height),

  };
xml文件
<?xml version="1.0" encoding="utf-8" ?>
<Root>
  
  <!--登录窗口-->
  <Form id="FormLogin" type="Form">
   
  <!--panel控件-->
  <Control id ="panelMain" type="Panel">

  <Layout direction="Traverse">
   
  <Location>
  <x>3</x>
  <y>3</y>
  </Location>
  <Size>
  <width>234</width>
  <height>262</height>
  </Size>
   
  </Layout>



  <Layout direction="Vertical">

  <Location>
  <x>4</x>
  <y>34</y>
  </Location>
  <Size>
  <width>234</width>
  <height>262</height>
  </Size>
  </Layout>

   
  </Control>

  </Form>
  
</Root>

------解决方案--------------------
这么乱
------解决方案--------------------
C# code

 XElement xe = XDocument.Load(Server.MapPath("XMLFile.xml")).Element(XName.Get("Root"));
       IEnumerable<XElement> results= xe.Descendants(XName.Get("Layout"));
       foreach (XElement result in results)
       {
           if (result.Attribute("direction").Value == "Vertical")
           Response.Write(result.Value);
       }