【问题标题】:Return a linq reasult as 2D array?将 linq 结果返回为二维数组?
【发布时间】:2011-06-22 14:10:18
【问题描述】:

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

问题是,我如何将两个数组放入一个二维数组.....

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

感谢您的建议。

【问题讨论】:

  • 顺便说一下,你这里有一个数组数组(或锯齿状数组)。二维数组为string[,]。了解区别很重要

标签: c# dictionary multidimensional-array


【解决方案1】:

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

如果您使用 .NET 4,您可以使用 Tuple<string, int>,但如果要经常使用,您应该考虑创建自己的类型以提高可读性(属性“Project”和“Port " 比 "Item1" 和 "Item2" 清晰得多)。

【讨论】:

  • 哦!如何创建一个存储信息的类的想法,因为我有多个项目和一个端口号
【解决方案2】:

像这样:-

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

【讨论】:

  • 是的,你是对的!!!我忘了提一下,一个端口号有很多项目。所以我的输出像带有端口号的项目名
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-14
  • 2013-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多