我有以下数据:
Dictionary<string, string> dic = new Dictionary<string, string>();
dic.Add("1", "ABC1");
dic.Add("2", "ABC2");
dic.Add("3", "ABC3");
dic.Add("4", "ABC4");
dic.Add("5", "ABC5");
dic.Add("6", "ABC6");
string[] col = new string[] { "1", "4", "5" };
需要一个与col数组相同顺序的结果字符串数组,如:
string[] res = new string[] { "ABC1", "ABC4", "ABC5" };
尝试使用for循环,但需要linq
string[] res = new string[col.Length]; // { "ABC1", "ABC4", "ABC5" };
for(int i=0;i<col.Length;i++)
{
res[i] = dic[col[i]];
}
答案 0 :(得分:9)
不安全的方法只是直接来自字典Select
:
var result = col.Select(c => dic[c]).ToArray();
但是建议检查密钥是否在字典中以避免异常
var result = col.Where(c => dic.Keys.Contains(c))
.Select(c => dic[c])
.ToArray();
答案 1 :(得分:0)
试试这个:
var result = dic.Where(k => col.Contains(k.Key)).Select(v => v.Value).ToArray();