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]];
}
不安全的方法是直接从字典中获取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();