Linq to XML join - PullRequest
       1

Linq to XML join

2 голосов
/ 22 августа 2010

У меня есть один XML-файл, в котором значения хранятся в элементе категории, разделенном запятой:

<Company>
<name>Test</name>
<category>Power,Water,Gas</category>
</Company>

<Company>
<name>Test2</name>
<category>Water,Gas</category>
</Company>

В другом XML-файле в элементе категории хранится только одно значение:

<Bills>
<name>Test</name>
<category>Power</category>
</Bills>

<Bills>
<name>Test2</name>
<category>Water</category>
</Bills>

Так что теперь мне нужно объединить эти два xml-файла и получить все узлы компании, содержащие значение категории, из узла Bills.

У меня есть этот запрос:

Xdocument fRoot = XDocument.Load("company.xml");
Xdocument rRoot = XDocument.Load("bills.xml");

var query = from f in fRoot.Elements("Company")
                        join r in rRoot.Elements("Bills")
                        on (string)f.Element("category").Value equals (string)r.Element("category").Value 
                        orderby(string)f.Element("name").Value
                        select new{...}

При этом я ничего не получаю, потому что значения категорий узлов компании хранятся через запятую, и я не знаю, как разделить их, чтобы выполнить JOIN для этих двух файлов.

Спасибо.

1 Ответ

3 голосов
/ 22 августа 2010

Вы можете попробовать что-то вроде этого:

var query = from f in fRoot.Elements("Company")
    from r in rRoot.Elements("Bills")
    where ((string)f.Element("category").Value).Split(',').Contains((string)r.Element("category").Value )
    orderby(string)f.Element("name").Value
    select new new{...};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...