Есть ли способ объединить 2 запроса LINQ2XML? - PullRequest
1 голос
/ 08 сентября 2011
var instructions = (from item in config.Elements("import")
select new
{
    name = item.Attribute("name").Value,
    watchFolder = item.Attribute("watchFolder").Value,
    root = item.Element("documentRoot").Value,
    DocumentNameDynamic = item.Element("documentName").Attribute("xpath").Value,
    DocumentNameStatic = item.Element("documentName").Attribute("static").Value,
    TemplateName = item.Element("template").Attribute("template").Value,
    Path = item.Element("path").Attribute("path").Value,
    fields = item.Element("fields").Elements()
}).SingleOrDefault();

var fields = from item in instructions.fields
select new
{
    xpath = item.Attribute("xpath").Value,
    FieldName = item.Attribute("FieldName").Value,
    isMultiValue = bool.Parse(item.Attribute("multiValue").Value)
};

1 Ответ

0 голосов
/ 08 сентября 2011

Я думаю, что-то вроде этого должно работать.Я добавил метод Select для возврата анонимного класса.

var instructions = (from item in config.Elements("import")
select new
{
    name = item.Attribute("name").Value,
    watchFolder = item.Attribute("watchFolder").Value,
    root = item.Element("documentRoot").Value,
    DocumentNameDynamic = item.Element("documentName").Attribute("xpath").Value,
    DocumentNameStatic = item.Element("documentName").Attribute("static").Value,
    TemplateName = item.Element("template").Attribute("template").Value,
    Path = item.Element("path").Attribute("path").Value,
    fields = item.Element("fields").Elements().Select(item => new {
        xpath = item.Attribute("xpath").Value,
        FieldName = item.Attribute("FieldName").Value,
        isMultiValue = bool.Parse(item.Attribute("multiValue").Value)
    }
).SingleOrDefault();

Если вы не хотите использовать метод Select Extension, вы можете использовать синтаксис LINQ.Вот пример этого.

var instructions = (from item in config.Elements("import")
select new
{
    name = item.Attribute("name").Value,
    watchFolder = item.Attribute("watchFolder").Value,
    root = item.Element("documentRoot").Value,
    DocumentNameDynamic = item.Element("documentName").Attribute("xpath").Value,
    DocumentNameStatic = item.Element("documentName").Attribute("static").Value,
    TemplateName = item.Element("template").Attribute("template").Value,
    Path = item.Element("path").Attribute("path").Value,
    fields = from e in item.Element("fields").Elements()
             select new {
                 xpath = item.Attribute("xpath").Value,
                 FieldName = item.Attribute("FieldName").Value,
                 isMultiValue = bool.Parse(item.Attribute("multiValue").Value)
             } // End of inner select statement
} // End of outer select statement
).SingleOrDefault();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...