将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代码。它的伟大之处在于,它完全是一个方法调用链的语法糖。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()
我想这就是你需要帮助的全部。