c#从字典中获取相对于其他数组的数组

本文关键字:数组 其他 相对于 获取 字典 | 更新日期: 2023-09-27 18:13:07

我有这样的数据:

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

c#从字典中获取相对于其他数组的数组

不安全的方法是直接从字典中获取Select:

var result = col.Select(c => dic[c]).ToArray();

但更建议检查键是否在字典中以避免异常

var result = col.Where(c => dic.Keys.Contains(c))
                .Select(c => dic[c])
                .ToArray();

试试这个:

var result = dic.Where(k => col.Contains(k.Key)).Select(v => v.Value).ToArray();