如何将此代码重写为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或类似的东西。
谢谢!
答案 0 :(得分:3)
这是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()
我认为这就是你所需要的所有帮助。