Лямбда-выражение с названием отдела с названием филиала - PullRequest
0 голосов
/ 05 ноября 2018
<Employee>
    <Data>
        <Details type = "Personal">
            <Detail  Name ="John"   Associate Job="Job">
                <Department Name="Law" >
                    <Branch>New York</Branch>
                    <Branch>Florida</Branch>
                </Department>
                <Department Name="Lecture" >
                    <Branch>London</Branch>
                    <Branch>Brit</Branch>
                </Department>
            </Detail>
        </Details>
    </Data>
</Employee>

выход

Law --     New York,
           Florida

Lecture -- London,
           Brit

Лямбда-выражение для указанного выше формата XML: ---

var employee = (из r в document.Descendants ("Detail"). Где (r => (строка) r.Attribute ("Name") == "John") выберите новый {key = r.Element ( «Отдел»). Атрибут («Имя»). Значение, значение = (из типа в (r.Element («Отдел»). Элементы («Отделение»)) выберите тип. Значение) .ToArray ()}) .ToDictionary (t => t.key, t => t.value);

Только одна запись идет

Law --     New York,
           Florida

Отсутствует: -

Lecture -- London,
           Brit

1 Ответ

0 голосов
/ 22 ноября 2018

Сначала вы можете выбрать все элементы отдела:

var employee = (from r in document.Descendants("Detail").Where(r => (string)r.Attribute("Name") == "John").SelectMany(x => x.Elements("Department"))
                            select new { key = r.Attribute("Name").Value,
                                value = (from type in r.Elements("Branch") select type.Value).ToArray() })
                            .ToDictionary(t => t.key, t => t.value);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...