2016-08-11 9 views
-1

このコードをVB.netとしてどのように書き直すのですか?オンライン変換ツールは、関数のリターン部分を変換しようとするときにgagします。LinQコードをC#コードからVB.Netに変換する

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 

その間違っているこの最後の部分:

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(); 
} 

具体的には、オンラインツールは、私にこのような何か与える

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

をし、私が何本のC#を理解していませんコードはLINQのように見えます。

ありがとうございます!

+0

htmlの処理にRegexを使用しないでください。 Htmlは有効なXMLであり、例えば 'XDocument'や' XElement'クラスはもっと良いアプローチになります – Fabio

+0

@Fabio:一般的にはそうですが、あなたが解析しているコンテンツの性質を知っていれば、それは限られた範囲です正規表現や他の形式のマッチング/抽出は問題ありません。 – siride

+0

@siride、RegexでHTMLを解析すると、さまざまな問題が発生する可能性があります。例:[http://stackoverflow.com/a/1732454/1565525](http://stackoverflow.com/a/1732454/1565525) Xmlパーサーを使用すると、htmlを処理するために、より明確で読みやすく維持可能な方法になります。 – Fabio

答えて

3

これはLINQコードです。それについての素晴らしい点は、それがメソッドコールの連鎖のための完全に構文的な砂糖であるということです。 fromは、列挙可能変数から(効果的に)ループ変数を導入するために使用され、selectは結果を生成します。後者は実際には方法Select()に対応しています。次のようにC#のLINQコードを書き換えることができる:

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

これはDataColumnオブジェクト、0から所定のcolumnCount各数に対して1つのアレイを作成します。ラムダが少し違って見えることを除けば、VBでは基本的に同じ構文を使用できます。

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

+0

ありがとう!これに基づいて、私はまた、これらも動作することを発見しました: "Return(from headerMatch In newMessel(headerMatch.Groups(1).ToString()))。ToArray()"および "Return(Enumerable.Rangeのインデックスから(0、columnCount)新しいDataColumnを選択します( "Column"&Convert.ToString(index))。)ToArray() " – Jeff

関連する問題