如何使用c#

时间:2018-05-29 06:28:57

标签: c# linq dictionary

我有值列表

list1[110,120,130]

我想在字典中查看我的字典表列值是否为

110_abc_ro
120_cfg_go
130_dfg_lo
110_abc_io
170_cfg_jo

是否包含列表值。 我希望输出像 110_abc_ro,110_abc_io用于列表值110

4 个答案:

答案 0 :(得分:2)

由于我不能告诉你的字典名称/密钥类型是什么,我只能这样做。对于每个列表项(110,120等),您现在遍历字典中的条目。每当字典中的值包含您从列表中重复的值时,它就会将其写入字符串,然后您可以发送/写入其他字符串。

foreach (int i in list1)
{
    string output = "";

    foreach (KeyValuePair<var, string> kvp in yourDictionary)
    {
        if (kvp.Value.Contains(i.ToString()))
        {
            output += kvp.Value + ", ";
        }
    }

    //print your outputstring here.
}

修改:

您可以使用yourDictionary.Values.Select(x => x.Value.Contains(i.ToString()));代替foreach。使用Lucifer的答案,您可以将其转换为以下内容;

foreach (int i in list1)
{
    string output = String.Join(",", yourDictionary.Values.Select(x => x.Value.Contains(i.ToString())));
}

答案 1 :(得分:1)

您可以使用String.Join()加入与您的int

列表匹配的所有值
  

根据MSDN此方法Concatenates字符串集合的所有元素,使用每个元素之间的指定分隔符。

例如:

  string values = String.Join(",", yourDictionary.Where(x => list.Any(ele => x.Value.Contains(ele.ToString()))).Select(x => x.Value).ToList());

答案 2 :(得分:0)

试试这个:

string result= "";
list1.ForEach(item => {
yourDictionary.ToList().ForEach
(
    pair =>
    {
        if (pair.Value.Contains(item.ToString()))
        {
            result = result + pair.Value + ", ";
        }
    }
);
});

答案 3 :(得分:0)

这里有简单的解决方案:

int[] list1 = { 110, 120, 130 };
List<string> dict = new List<string> { "110_abc_ro", "120_cfg_go", "130_dfg_lo", "110_abc_io", "170_cfg_jo" };

for (int i = 0; i < list1.Length; i++)
{
    string str = "Values from dictionary containing " + list1[i] + ":\n";
    str += String.Concat(dict.Where(val => val.Contains(list1[i].ToString())).Select(val => val + ", "));
    Console.Write(str);
}