C # Linq объединяет несколько значений в строку данных - PullRequest
0 голосов
/ 02 октября 2018

Итак, я собираю строку записей в формате XMLэто одно поле имеет отношение 1: М.Обычно я загружаю их так:

var entries = from x in xml.Descendants(Reporting) select new { additionalReportingValue = (string)x.Descendants("additionalReporting").FirstOrDefault()};

, но так как AdditionalReportingValue может иметь несколько значений для одной записи, это не удастся.Я не уверен, как пройти через все значения и преобразовать многие в 1.

Вот пример канала и как он их показывает, эта запись имеет 2 значения (E, S):

<ns1:listOfAdditionalReportingValues>
<ns1:additionalReportingValue>E</ns1:additionalReportingValue> 
<ns1:additionalReportingValue>S</ns1:additionalReportingValue> 
</ns1:listOfAdditionalReportingValues>

любая помощь будет оценена.спасибо

Ответы [ 2 ]

0 голосов
/ 02 октября 2018

Если вы хотите объединить их в одну строку, например, через запятую, вы можете использовать Join inline следующим образом:

var entries = from x in xml.Descendants(Reporting)
    select new 
    {
        additionalReportingValue = string.Join
        (
            ",",
            x.Descendants("additionalReporting")
        )
    };
0 голосов
/ 02 октября 2018

Зависит от того, что вы хотите.Я обычно использую «XDocument», а затем продолжаю метод «потомков», у вас есть коллекция для перебора.Пример ваших данных (исключая пространства имен для простоты использования) будет похож на:

static void Main(String[] args)
    {
        var data = "<listOfAdditionalReportingValues><additionalReportingValue>E</additionalReportingValue><additionalReportingValue>S</additionalReportingValue></listOfAdditionalReportingValues>";
        var xdoc = XDocument.Parse(data);
        var rootDescendents = xdoc.Root.Descendants();
        var elementDescendents = xdoc.Element("listOfAdditionalReportingValues").Descendants();
        rootDescendents.ToList().ForEach(x => Console.WriteLine(x));
        rootDescendents.ToList().ForEach(x => Console.WriteLine(x.Value));
        elementDescendents.ToList().ForEach(x => Console.WriteLine(x));
        elementDescendents.ToList().ForEach(x => Console.WriteLine(x.Value));

        Console.ReadLine();
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...