将linq reasult作为2D数组返回?

时间:2011-02-07 07:58:53

标签: c# dictionary multidimensional-array

我正在使用返回数组的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数组中.....

另一种选择是将其作为字典返回,但它可以有多个相同的项目名称。

Thanx的建议。

2 个答案:

答案 0 :(得分:4)

我建议将{Project,Port}对封装在一个单独的数据类型中,并返回该类型的数组(或列表)。除此之外,端口号可以是数字而不是字符串:)

如果你使用的是.NET 4,你可以使用Tuple<string, int>,但是如果要使用它很多,你应该考虑为了可读性而创建自己的类型(属性“Project”和“Port”比“Item1”和“Item2”更清晰。

答案 1 :(得分:0)

像这样: -

 return new string[][] { projectNames, portNumber};