Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 字典c中的ToString#_C#_String_Dictionary - Fatal编程技术网

C# 字典c中的ToString#

C# 字典c中的ToString#,c#,string,dictionary,C#,String,Dictionary,我有一个c语言的字典,我需要一种方法来创建一个字符串,其内容格式为“key1-value1,key2-value2”,等等 我是c#的新手,因此我创建了以下函数来实现此目标: private string buildString(Dictionary<int, string> info) { string result = ""; int i = 1; foreach (KeyValuePair<int, string> pair in info)

我有一个c语言的
字典
,我需要一种方法来创建一个字符串,其内容格式为
“key1-value1,key2-value2”
,等等

我是c#的新手,因此我创建了以下函数来实现此目标:

private string buildString(Dictionary<int, string> info)
{
    string result = "";
    int i = 1;
    foreach (KeyValuePair<int, string> pair in info)
    {
        if (i < info.Count)
        {
            result += pair.Key + "-" + pair.Value + ",";
        }
        else
        {
            result += pair.Key + "-" + pair.Value;
        }
        i++;
    }

    return result;
}
私有字符串构建字符串(字典信息)
{
字符串结果=”;
int i=1;
foreach(信息中的KeyValuePair对)
{
如果(i
但是,此函数不完善且冗长。我知道C#有
String.format
,但我不确定是否使用它,也不知道如何使用它


是否有更好的方法以更高效、更少冗长的方式实现相同的输出?如果是,如何设置?

string.Format
是设置
字符串的格式,您有值,并且希望将它们连接起来

您可以像这样使用
string.Join

var result = string.Join(", ", info.Select(kvp => string.Join("-", kvp.Key, kvp.Value)));

string.Format
是对
字符串进行格式化,您有值,并且希望将它们连接起来

您可以像这样使用
string.Join

var result = string.Join(", ", info.Select(kvp => string.Join("-", kvp.Key, kvp.Value)));

这适合你的需要吗

Dictionary<int, string> dic = new Dictionary<int, string>()
{
    {1, "aaaa"},
    {2, "uodhasdhsa"},
    {3, "audaygdyasgdyasdgasydgas"}
};

List<string> list = new List<string>(dic.Select(keyValuePair => keyValuePair.Key + "-" + keyValuePair.Value));
Console.WriteLine(string.Join(", ", list));
Dictionary dic=新字典()
{
{1,“aaaa”},
{2,“uodhasdhsa”},
{3,“Audaygdyasgdyadgassydgas”}
};
列表=新列表(dic.Select(keyValuePair=>keyValuePair.Key+“-”+keyValuePair.Value));
Console.WriteLine(string.Join(“,”,list));

这是否适合您的需要

Dictionary<int, string> dic = new Dictionary<int, string>()
{
    {1, "aaaa"},
    {2, "uodhasdhsa"},
    {3, "audaygdyasgdyasdgasydgas"}
};

List<string> list = new List<string>(dic.Select(keyValuePair => keyValuePair.Key + "-" + keyValuePair.Value));
Console.WriteLine(string.Join(", ", list));
Dictionary dic=新字典()
{
{1,“aaaa”},
{2,“uodhasdhsa”},
{3,“Audaygdyasgdyadgassydgas”}
};
列表=新列表(dic.Select(keyValuePair=>keyValuePair.Key+“-”+keyValuePair.Value));
Console.WriteLine(string.Join(“,”,list));

您不应该使用
字符串
。当您使用foreach循环时,您使用的计数器(i)是不必要的。foreach循环将查看集合中的所有项目,然后停止,因此不需要计数器。@DavidWatts在此代码中,
i
不用于停止。在
info
的最后一个元素上,他不想附加
字符。@ikh是的,我刚开始快速扫描时好像没注意到。但这仍然是不必要的。您可以使用linq实现类似于
if(pair==info.Last())
的功能。谢谢你抓住了我的错误。你不应该使用
string
。当您使用foreach循环时,您使用的计数器(i)是不必要的。foreach循环将查看集合中的所有项目,然后停止,因此不需要计数器。@DavidWatts在此代码中,
i
不用于停止。在
info
的最后一个元素上,他不想附加
字符。@ikh是的,我刚开始快速扫描时好像没注意到。但这仍然是不必要的。您可以使用linq实现类似于
if(pair==info.Last())
的功能。谢谢你抓住了我的错误…在30秒之前!。。在30秒之前!