2017-12-27 12 views
1

何らかの条件でxmlリストを逆直列化してデータを取得したいとします。しかし、私はそのための適切な解決策を得ていませんでした。以下は私のコードスニペットです:Cでの条件付き逆シリアル化XMLリストの取得方法

以下
public List<LinkInfo> GetLinks(string entityType, string relatedEntityType, string linkType) 
    { 
     try 
     { 
      XmlSerializer deserializer = new XmlSerializer(typeof(Project)); 
      TextReader reader = new StreamReader(@"E:\\SampleMetaData.xml"); 
      object obj = deserializer.Deserialize(reader); 

      Project xmlData = (Project)obj; 
      return xmlData.Module.Links.Link.Select(field => new LinkInfo 
      { 
       EntityId = field.EntityId, 
       EntityType = field.EntityType, 
       RelatedEntityId = field.RelatedEntityId, 
       RelatedEntityType = field.RelatedEntityType, 
       LinkType = field.LinkType 
      }).ToList();    
     } 
     catch(Exception ex) 
     { 
      Console.WriteLine("Error in",ex); 
      throw; 
     } 

    } 

は私のXMLファイル形式です:

<Links> 
     <Link EntityId="5" EntityType="Doors_Module1" RelatedEntityId="7" RelatedEntityType="Doors_Module2" LinkType="InLink"/> 
     <Link EntityId="6" EntityType="Doors_Module1" RelatedEntityId="8" RelatedEntityType="Doors_Module2" LinkType="InLink"/> 
     <Link EntityId="7" EntityType="Doors_Module1" RelatedEntityId="9" RelatedEntityType="Doors_Module2" LinkType="External"/> 
    </Links> 

私はwhere LinkType="Inlink" EntityType="Doors_Module1" and RelatedEntityType="Doors_Module2"

私はこれをどのように行うことができますように取得したいですか? ありがとうございました。

+0

のために働く必要がありますか? その場合、 '.Where(x => x.LinkType == 'Doors_Module1')' –

+0

を簡単に使うことができますか?LinkInfoクラスも共有できますか? –

+0

あなたはforeachまたはループ 'obj。[i] .LinkType' kind offを使用することができます –

答えて

1
return xmlData.Module.Links.Link 
.Where(x=>.LinkType == 'Inlink' && x.EntityType == 'Doors_Module1') 
.Select(field => new LinkInfo 
     { 
      EntityId = field.EntityId, 
      EntityType = field.EntityType, 
      RelatedEntityId = field.RelatedEntityId, 
      RelatedEntityType = field.RelatedEntityType, 
      LinkType = field.LinkType 
     }).ToList();  

このコードは、私はあなたがXMLクラスのシリアル化の権利を使用していると思います

+1

ありがとうございます@Arijit Mukherjee、それはまさに私がしたいと思うように動作します....もう一度ありがとう... –

+1

助けてうれしい嬉しいupvoteとあなたの目的を解決したようにそれをマークすることを忘れないでください –

関連する問題