我有值列表
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
答案 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);
}