일부 조건을 사용하여 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 파일 형식 :
나는이 작업을 수행 할 수있는 방법where LinkType="Inlink" EntityType="Doors_Module1" and RelatedEntityType="Doors_Module2"
같이 가져 오기 할
<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 (x => x.LinkType == 'Doors_Module1')' –
도 간단하게 사용할 수 있습니다. LinkInfo 클래스도 공유 할 수 있습니까? –
당신은 foreach 또는 루프'obj. [i] .LinkType' kind off를 사용할 수 있습니다. –