C#从字典中获取与其他数组相关的数组

时间:2016-10-14 10:12:56

标签: c# arrays linq dictionary

我有以下数据:

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]];
}

2 个答案:

答案 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();