Как написать этот Linq в XML Query для хранения значений в памяти? - PullRequest
1 голос
/ 19 марта 2012
<?xml version="1.0" encoding="utf-8" ?>
<SiteMap>
    <Site FacID="Default">
      <Rec0>
            <NumGeos>
                <RMin>0</RMin>
                <YMin>1</YMin>
                <YMax>4</YMax>
                <RMax>5</RMax>
            </NumGeos>
            <GeoAvg>
                <RMin>10</RMin>
                <YMin>20</YMin>
                <YMax>60</YMax>
                <RMax>70</RMax>
            </GeoAvg>
            <L1AGC>
                <RMin>2500</RMin>
                <YMin>2600</YMin>
                <YMax>3400</YMax>
                <RMax>3500</RMax>
            </L1AGC>
            <NumL1s>
                <RMin>0</RMin>
                <YMin>1</YMin>
                <YMax>14</YMax>
                <RMax>15</RMax>
            </NumL1s>
            <L1Avg>
                <RMin>10</RMin>
                <YMin>20</YMin>
                <YMax>60</YMax>
                <RMax>70</RMax>
            </L1Avg>
            <L2AGC>
                <RMin>2500</RMin>
                <YMin>2600</YMin>
                <YMax>3400</YMax>
                <RMax>3500</RMax>
            </L2AGC>
            <NumL2s>
                <RMin>0</RMin>
                <YMin>1</YMin>
                <YMax>14</YMax>
                <RMax>15</RMax>
            </NumL2s>
            <L2Avg>
                <RMin>10</RMin>
                <YMin>20</YMin>
                <YMax>60</YMax>
                <RMax>70</RMax>
            </L2Avg>
        </Rec0>
    </Site>
    <Site FacID="BET">
        <Rec1>
            <NumGeos>
                <RMin>0</RMin>
                <YMin>1</YMin>
                <YMax>4</YMax>
                <RMax>5</RMax>
            </NumGeos>
            <GeoAvg>
                <RMin>10</RMin>
                <YMin>20</YMin>
                <YMax>60</YMax>
                <RMax>70</RMax>
            </GeoAvg>
            <L1AGC>
                <RMin>2500</RMin>
                <YMin>2600</YMin>
                <YMax>3400</YMax>
                <RMax>3500</RMax>
            </L1AGC>
            <NumL1s>
                <RMin>0</RMin>
                <YMin>1</YMin>
                <YMax>14</YMax>
                <RMax>15</RMax>
            </NumL1s>
            <L1Avg>
                <RMin>10</RMin>
                <YMin>20</YMin>
                <YMax>60</YMax>
                <RMax>70</RMax>
            </L1Avg>
            <L2AGC>
                <RMin>2500</RMin>
                <YMin>2600</YMin>
                <YMax>3400</YMax>
                <RMax>3500</RMax>
            </L2AGC>
            <NumL2s>
                <RMin>0</RMin>
                <YMin>1</YMin>
                <YMax>14</YMax>
                <RMax>15</RMax>
            </NumL2s>
            <L2Avg>
                <RMin>10</RMin>
                <YMin>20</YMin>
                <YMax>60</YMax>
                <RMax>70</RMax>
            </L2Avg>
        </Rec1>
    </Site>
</SiteMap>

Я пытаюсь сохранить значения, перечисленные в файле XML выше, чтобы я мог ссылаться на них следующим образом:

int x = (Site["BET"].Rec1.GeoAvg.RMin == null 
      ? Site["Default"].Rec0.GeoAvg.RMin 
      : Site["BET"].Rec1.GeoAvg.RMin)

Или, по крайней мере, что-то похожее на это. Кто-нибудь знает простой (и быстрый) способ сделать это? Большое спасибо за вашу помощь !!!

Ответы [ 2 ]

1 голос
/ 02 апреля 2012

ОК, поэтому вместо того, чтобы пытаться использовать Linq, я использовал это:

Создание класса C # из XML

Тогда я просто сослался на элементы в новом классе, используя точечную запись.

1 голос
/ 19 марта 2012

Основная часть будет ToDicionary(), что-то вроде

var sites = doc.Descendants("Site").ToDictionary(
        e => e.Attribute("FacID").Value, 
        e => new Site { Rec1 = new Rec1 { ... } } );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...