将LinQ代码从c#代码转换为VB.Net代码

本文关键字:代码 VB 转换 Net LinQ | 更新日期: 2023-09-27 18:01:54

如何将此代码重写为VB.net?在线转换工具在尝试转换函数的Return部分时会出错。

private static DataColumn[] ParseColumns(string tableHtml)
{
    MatchCollection headerMatches = Regex.Matches(
        tableHtml,
        HeaderPattern,
        ExpressionOptions);
    return (from Match headerMatch in headerMatches
            select new DataColumn(headerMatch.Groups[1].ToString())).ToArray();
}
private static DataColumn[] GenerateColumns(MatchCollection rowMatches)
{
    int columnCount = Regex.Matches(
        rowMatches[0].ToString(),
        CellPattern,
        ExpressionOptions).Count;
    return (from index in Enumerable.Range(0, columnCount)
            select new DataColumn("Column " + Convert.ToString(index))).ToArray();
}

具体来说,在线工具会给我这样的东西:

    Private Shared Function GenerateColumns(rowMatches As MatchCollection) As DataColumn()
     Dim columnCount As Integer = Regex.Matches(rowMatches(0).ToString(), CellPattern, ExpressionOptions).Count
     Return (From index In Enumerable.Range(0, columnCount)New DataColumn("Column " + Convert.ToString(index))).ToArray()   End Function

最后这部分是不正确的:

(From index In Enumerable.Range(0, columnCount)New DataColumn("Column " + Convert.ToString(index))).ToArray()

,我不明白这段c#代码想做什么——它看起来像LINQ或类似的东西。

谢谢!

将LinQ代码从c#代码转换为VB.Net代码

这是LINQ代码。它的伟大之处在于,它完全是一个方法调用链的语法糖。from用于从可枚举对象(有效地)引入循环变量,select生成结果。后者实际上对应一个方法Select()。你可以这样重写c# LINQ代码:

Enumerable.Range(0, columnCount).Select(index => new DataColumn("Column " + index)).ToArray();

这将创建一个DataColumn对象数组,从0到给定的columnCount,每个数字对应一个。你可以在VB中使用基本相同的语法,除了lambda看起来有点不同:

Enumerable.Range(0, columnCount).Select(Function(index) New DataColumn("Column " & index)).ToArray()

我想这就是你需要帮助的全部。