[英]Convert LinQ code from C# code to VB.Net
如何將該代碼重寫為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()
我想這就是您需要幫助的全部。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.