Вернуть результат linq как 2D массив? - PullRequest
2 голосов
/ 07 февраля 2011

Я читаю файлы конфигурации с помощью Linq, который возвращает массив.

Есть запрос к Linq в одной функции, одна - это номер порта возврата, а другая - имя проекта. Эта функция возвращает оба в двумерном массиве (ИЛИ что угодно).

  public string[][] GetProjectsPorts(string cruiseControlPath)
    {
          var projectNames = (from item in xdoc.Elements("project")
                                select item.Attribute("name").Value).ToArray();


          var portNumber = (from item in xdoc.Elements("system.runtime.remoting").
                                  Elements("application").Elements("channels").Elements("channel")
                              select item.Attribute("port").Value).ToArray();

        return ??
    }

Проблема в том, как поместить оба массива в один 2D-массив .....

Другой вариант - вернуть его в виде словаря, но он может иметь несколько одинаковых имен проектов.

Спасибо за предложения.

Ответы [ 2 ]

4 голосов
/ 07 февраля 2011

Я бы предложил инкапсулировать пару {Project, Port} в отдельный тип данных и вернуть массив (или список) этого типа.Помимо всего прочего, в этом случае номер порта может быть числом, а не строкой:)

Если вы используете .NET 4, вы можете использовать Tuple<string, int>, но если это будет использоваться довольноВо многом вам следует подумать о создании собственного типа для удобства чтения (свойства «Project» и «Port» значительно более понятны, чем «Item1» и «Item2»).

0 голосов
/ 07 февраля 2011

Вроде так: -

 return new string[][] { projectNames, portNumber};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...