1

我有一个以下格式的 XML 文件

<?xml version="1.0" encoding="utf-8"?>
<root>

  <EntityType_Data>
    <EntityType>
      <ID>1</ID>
      <Caption>Entity1</Caption>
      <Description>Entity1</Description>
      <ModuleID>3</ModuleID>
      <Category>1</Category>
    </EntityType>
    <EntityType>
      <ID>2</ID>
      <Caption>Entity2</Caption>
      <Description>Entity2</Description>
      <ModuleID>3</ModuleID>
      <Category>1</Category>
    </EntityType>
    <EntityType>
      <ID>3</ID>
      <Caption>Entity4</Caption>
      <Description>Entity4</Description>
      <ModuleID>3</ModuleID>
      <Category>1</Category>
    </EntityType>
    <EntityType>
      <ID>4</ID>
      <Caption>Entity5</Caption>
      <Description>Entity5</Description>
      <ModuleID>3</ModuleID>
      <Category>1</Category>
    </EntityType>
    </EntityType_Data>
  <AttributeType_Table>
    <AttributeType>
      <ID>1</ID>
      <Caption>AttributeType1</Caption>
      <DataType>string</DataType>
      <SqlType>nvarchar(max)</SqlType>
     </AttributeType>
    <AttributeType>
      <ID>1</ID>
      <Caption>AttributeType2</Caption>
      <DataType>integer</DataType>
      <SqlType>int</SqlType>
     </AttributeType>

   </AttributeType_Table>
  <Attributes_Table>
    <Attribute>
      <ID>1</ID>
      <Caption>SingleLineTextbox</Caption>
      <AttributeTypeID>1</AttributeTypeID>
      </Attribute>
    <Attribute>
      <ID>2</ID>
      <Caption>MultiLineTextBox</Caption>
      </Attribute>
    <Attribute>
      <ID>3</ID>
      <Caption>OrgLevel</Caption>
      <AttributeTypeID>3</AttributeTypeID>
      </Attribute>
  </Attributes_Table>
  <EntityRelationtable>
    <EntityTypeAttributeRelation>
      <EntityTypeID>2</EntityTypeID>
      <AttributeID>1</AttributeID>
    </EntityTypeAttributeRelation>
    <EntityTypeAttributeRelation>
      <EntityTypeID>3</EntityTypeID>
      <AttributeID>2</AttributeID>
      </EntityTypeAttributeRelation>
    <EntityTypeAttributeRelation>
      <EntityTypeID>3</EntityTypeID>
      <AttributeID>1</AttributeID>
      </EntityTypeAttributeRelation>
    <EntityTypeAttributeRelation>
      <EntityTypeID>3</EntityTypeID>
      <AttributeID>3</AttributeID>
      </EntityTypeAttributeRelation>
    <EntityTypeAttributeRelation>
      <EntityTypeID>2</EntityTypeID>
      <AttributeID>2</AttributeID>
      </EntityTypeAttributeRelation>
  </EntityRelationtable>
</root>

现在我想从“EntityRelationtable”元素中获取数据过滤器“EntityTypeID”“AttributeID” ,使用基于“AttributeID”之​​后的条件需要从“AttributeType_Table”元素中获取“Caption”、“Datatype”并且需要获取“描述”来自“EntityType_Data”元素。

我必须使用 Linq lambda 表达式来完成上述要求。请仅通过带有 lambda 的 linq 解决。

到目前为止,我试图从“EntityRelationtable”元素中获取“EntityTypeID”“AttributeID” 。

var attributeresult = workingXmldoc
  .Descendants("EntitytypeAttributeRelation_Table")
  .Elements("EntityT‌​ypeAttributeRelation")
  .Where(x => x.Element("EntityTypeID").Value == "" + entitytypeId + "")
  .Select(v => new { EntitytypeID = v.Element("EntityTypeID").Value, AttributeID = v.Element("AttributeID").Value }); 

我正在考虑将这个结果与"AttributeType_Table"元素"AttributeID"结合起来。

4

1 回答 1

1

最后,我只使用 linq 查询而不是 linq Lambda 解决了我的问题。

var attributeresult = from a in workingXmldoc.Descendants("EntityRelationtable").Elements("EntityTypeAttributeRelation")
                          join b in workingXmldoc.Descendants("Attributes_Table").Elements("Attribute")
                          on (string)a.Element("AttributeID") equals (string)b.Element("ID")
                          join c in workingXmldoc.Descendants("Attributetype_Table").Elements("AttributeType")
                          on (string)b.Element("AttributeTypeID") equals (string)c.Element("ID")                                                                                           
                          where (string)a.Element("EntityTypeID") == "" + entitytypeId + ""
                          select new {
                              AttributeID = a.Element("AttributeID").Value,
                              AttributeName = b.Element("Caption").Value,
                              AttributeDatatype = c.Element("DataType").Value,
                              AttributeSqltype = c.Element("SqlType").Value
                          };

如果有任何机构给出值得赞赏的 Linq-lambda 查询..

于 2013-02-19T18:38:34.053 回答