我有一个xml文件:
<?xml version='1.0' encoding='windows-1251' standalone='yes'?><XML>
<Result>Ok</Result>
<Error></Error>
<Remark></Remark>
<Data>
<Theatres>
<Theatre ID='1' ShowBusyPlaces='1'> // maybe more than one
<Name><![CDATA[PlaceName]]></Name>
<NameFull><![CDATA[PlaceName]]></NameFull>
<Remark><![CDATA[]]></Remark>
<Address><![CDATA[]]></Address>
<Halls Count='3'>
<Hall ID='1'>
<Name><![CDATA[Redisson]]></Name>
<Levels Count='1'>
<Level ID='1' Geometry='1'> // maybe more than one
<Name><![CDATA[Radisson]]></Name>
</Level>
</Levels>
</Hall>
<Hall ID='3'>
<Name><![CDATA[Test 2]]></Name>
<Levels Count='0'></Levels>
</Hall>
<Hall ID='2'>
<Name><![CDATA[тест]]></Name>
<Levels Count='1'>
<Level ID='4' Geometry='2'>
<Name><![CDATA[ттт]]></Name>
</Level>
</Levels>
</Hall>
</Halls>
</Theatre>
</Theatres>
</Data>
</XML>
而且,我有两个班级:BasePlace
和HallPlan
(关系为一对多)
BasePlace
:OID, Name, Address
HallPlan
:OID, BasePlaceId, HallId, LevelId
例如,上面的结果必须是:
BasePlace table:
OID Name Address
1 PlaceName
HallPlan table:
OID BasePlaceId, HallId, LevelId
1 1 1 1
2 1 2 4
3 1 3 null
此查询返回仅填充BasePlace
对象:
var places = from element in XDocument.Parse(xml).Descendants("Theatre")
select new BasePlace
{
OIDPremiera = (int) element.Attribute("ID"),
Name = (string) element.Element("Name"),
Address = (string) element.Element("Address"),
};
如何正确填充HallPlan
(所有字段和与BasePlace
的关系)?
感谢。
答案 0 :(得分:0)
这应该是:
的效果 var plans = from element in XDocument.Parse(xml).Descendants("Hall")
select new HallPlan
{
OIDHallPlan = (int) element.Attribute("ID"),
BPRef = (BasePlace) (from BasePlace1 in places
where (BasePlace1.OIDPremiera == (int)element.Parent.Parent.Attribute("ID"))
select BasePlace1).FirstOrDefault(),
// ...
};