【问题标题】:linq lambda multiple steps arraylinq lambda 多步数组
【发布时间】:2017-02-03 10:15:16
【问题描述】:

我不知道这是否可能,以及我是否想将 lambda 推得太远。我不喜欢双重正则表达式(Class.Column 不是我的)。我有这个简单的选择功能:

(列名是一个列表)

string reg = "(.*):(.*)";
Class.Column[] Columns = (Class.Column[])this.ColumnNames
    .Select(x =>
        new Class.Column() {
            Param1 = Regex.Match(x, reg).Groups[1].ToString(),
            Param2 = Regex.Match(x, reg).Groups[2].ToString()
        }
    );

有没有办法将正则表达式输出设置为z,然后param1 = z1.Groups[1].ToString()

【问题讨论】:

  • 为什么不只是x.Split(':')

标签: c# arrays linq list lambda


【解决方案1】:

您可以连接多个 Select 以执行多个转换。 您还必须用 ToArray 功能替换演员

        Class.Column[] Columns = this.ColumnNames
            .Select(x=> Regex.Match(x, reg))
            .Select(z =>
            new Class.Column()
            {
                Param1 = z.Groups[1].ToString(),
                Param2 = z.Groups[2].ToString()
            }).ToArray();

【讨论】:

  • 我认为.ToArray() 是必要的。将.Select(...) 的结果转换为数组将失败,因为它不是数组。
  • 你是对的。我想说的是,这样做的正确方法是使用 ToArray() 功能,而不是它会更好。
猜你喜欢
  • 1970-01-01
  • 2016-07-26
  • 2015-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多