10

として宣言されたDictionaryオブジェクトがありますvar as Dictionary(of String, String)

Generic Collectionで利用可能なLINQ拡張機能を利用しようとしていますが、拡張機能以外のメソッドしか取得していません。

辞書コレクションを次のパターンの文字列に変換する必要があります。key1=val1, key2=val2, ..., keyn=valn

私がプログラマーブロックであるという事実を除いて、最初にforeachループを実行するとその場に出くわすと思いました。

私がこれまでに持っているものですが、これを生成するための最良の論理パターンを疑っています:

Public Overrides Function ToString() As String
    Dim ret As String = ""
    For Each kv As KeyValuePair(Of String, String) In Me._set
        If ret <> String.Empty Then
            ret &= ", "
        End If

        ret &= String.Format("{0}={1}", kv.Key, kv.Value)
    Next

    Return ret
End Function

System.Coreまた、何らかの理由で、 &ライブラリをプロジェクトにインポートしたにもかかわらずSystem.Linq、拡張LINQ拡張機能がdev-envインテリセンスに表示されていません。したがって、今のところ、誰かがLINQ拡張機能をIntellisenseに表示するのを手伝ってくれない限り、それらは問題外です。

LINQ拡張機能が表示されないという問題が見つかったため、テーブルに戻ってきました;)

4

3 に答える 3

10

メソッドブロック全体をLinqで次のように記述します(C#-vb.netスープで申し訳ありません...)

Cシャープ

return String.Join(",",Me._set.Select(kvp=>String.Format("{0}={1}",kvp.Key, kvp.Value).ToArray());

また、_setが何であるかはよくわかりません。多分あなたはキャストする必要があるでしょう:

Cシャープ:

return String.Join(",", Me._set.Cast<KeyValuePair<String,String>>().Select(kvp=>String.Format("{0}={1}",kvp.Key, kvp.Value).ToArray());

vb.net:

return String.Join(", ", Me.Select(Function(kvp) String.Format("{0}={1}", kvp.Key, kvp.Value)).ToArray())

これがお役に立てば幸いです、

于 2012-11-28T17:11:12.950 に答える
6

非LINQループに関する限り、次のようにすることをお勧めします。

Public Overrides Function ToString() As String
    Dim items As New List(Of String)(_set.Count)
    For Each pair As KeyValuePair(Of String, String) In _set
        items.Add($"{pair.Key}={pair.Value}"))
    Next
    Return String.Join(", ", items)
End Function

LINQを使用すると、次のように実行できます。

Public Overrides Function ToString() As String
    Return String.Join(", ", _set.Select(Function(pair) $"{pair.Key}={pair.Value}"))
End Function
于 2012-11-28T16:53:13.277 に答える
3

VB.net構文:

Dim dic As New Dictionary(Of String, String)() From {
            {"a", "1"},
            {"b", "2"},
            {"c", "3"},
            {"d", "4"}
            }

Dim s As String = String.Join(",", dic.Select(Function(pair) String.Format("{0}={1}", pair.Key, pair.Value)).ToArray())
于 2012-11-28T22:29:25.737 に答える