将Dictionary转换为结构化格式字符串

Gol*_*hop 8 vb.net collections .net-4.0 generic-collections

我有一个声明为的Dictionary对象var as Dictionary(of String, String).

我正在尝试使用Generic Collection可用的LINQ扩展,但我只获取非扩展方法.

我需要将Dictionary集合转换为具有以下模式的字符串: 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
Run Code Online (Sandbox Code Playgroud)

由于某种原因,即使我已将System.Core&System.Linq库导入项目,也没有任何扩展的LINQ扩展出现在我的dev-env intellisense中.所以现在,除非有人可以帮助我在Intellisense中显示LINQ扩展,否则它们是不可能的.

发现LINQ扩展没有出现的问题,所以他们回到了桌子上;)

jbl*_*jbl 9

我会用Linq这样编写整个方法块(抱歉C#-vb.net汤...)

C-尖锐

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

另外,我真的不知道_set是什么.也许你必须施展:

C-尖锐:

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

vb.net:

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

希望这会有所帮助,

  • 我在vb.net中发现了括号错误。应该是`返回String.Join(“,”,Me.Select(Function(kvp)String.Format(“ {0} = {1}”,kvp.Key,kvp.Value))。ToArray())` (2认同)

Ste*_*art 5

至于你的非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
Run Code Online (Sandbox Code Playgroud)

使用LINQ,你可以这样做:

Public Overrides Function ToString() As String
    Return String.Join(", ", _set.Select(Function(pair) $"{pair.Key}={pair.Value}"))
End Function
Run Code Online (Sandbox Code Playgroud)