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>

ここで、 「AttributeID」に基づいてキャプション」 、「 Datatype を「AttributeType_Table」要素から取得「EntityType_Data」要素からの「説明」 。

私はLinqラムダ式を使用して上記の要件を実行する必要があります。ラムダを使用した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 Lambda ではなく linq クエリのみを使用して質問を解決しました。

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 に答える