簡體   English   中英

將LinQ代碼從C#代碼轉換為VB.Net

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM