繁体   English   中英

如何从字典中连接值?

[英]How to join values from dictionary?

我的字典代码如下:

int entry=0;
string[] numbers ={"123","123","123","456","123"};
Dictionary<string, List<string>> dictionary = new Dictionary<string, List<string>>();
foreach (string number in numbers)
{
    if (dictionary.ContainsKey("ABC"))
    {

    }
    else if (!dictionary.ContainsKey("ABC") && entry==0)
    {
        dictionary.Add("ABC", new List<string>());
        dictionary["ABC"].Add(number);
        entry = 1;
    }
    else if (!dictionary.ContainsKey("ABC") && entry == 1)
    {
        dictionary["ABC"].Add(number);
    }
}
foreach(KeyValuePair<string,string> kvp in dictionary)
{
    Console.WriteLine("Key={0},Value = {1}", kvp.Key,kvp.Value);
}
Console.ReadKey();

我想要如下输出Key="ABC",Value="123,456"即我只需要打印一次所有字典值,而无需重复。 在上面的字符串数组123中出现了4次。但是我只想打印一次,也需要456,并且还要用comma(“,”)将这些值联合起来。所以我需要像Key="ABC",Value="123,456" 请分享您的想法。 提前致谢。

我只需要打印一次所有字典值,而无需重复。

使用Distinct方法。

以逗号(“,”)表示值的关节

使用String.Join方法。

foreach(var kvp in dictionary)
{
     Console.WriteLine("Key={0},Value = {1}", 
         kvp.Key, 
         String.Join(", " kvp.Value.Distinct())
     );
}

您可以这样尝试:

foreach(var value in dictionary.Values.Distinct())
{
  names = String.Join(", ", value); 
}

我认为以下for循环变量不正确:

            foreach(KeyValuePair<string,string> kvp in dictionary)
           {
        Console.WriteLine("Key={0},Value = {1}", kvp.Key,kvp.Value);
           }

它应该显示为:然后注意写行的区别

            foreach(KeyValuePair<string,List<string>> kvp in dictionary)
           {
        Console.WriteLine("Key={0},Value = {1}", kvp.Key,string.Join(",", kvp.Value.ToArray()));
           }

您可以使用以下简单的linq来展平并加入所有字典内容:

var result = string.Join(" - ", dic.Select(kvp => string.Format("Key={0}, Values={1}", kvp.Key, string.Join(", ",kvp.Value.Distinct()))));

而不是使用此数组:

string[] numbers = {"123","123","123","456","123"};

将另一个数组添加为:

string[] uniqueNumbers = numbers.Distinct().ToArray();

现在使用带有唯一值的此数组将其添加到字典中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM