我有一个列表,
List<string> list = new List<string>();
list.Add("MEASUREMENT");
list.Add("TEST");
我有一本字典,
Dictionary<string, string> dict = new Dictionary<string, string>();
dict.Add("BPGA", "TEST");
dict.Add("PPPP", "TEST");
dict.Add("RM_1000", "MEASUREMENT");
dict.Add("RM_2000", "MEASUREMENT");
dict.Add("CDMA", "TEST");
dict.Add("X100", "XXX");
现在,我想根据列表从字典中获取所有匹配的数据。 意味着,列表中的所有数据都与dict值匹配,然后获得具有以下数学值的新词典
有没有办法通过使用lambda表达式来实现这个目的?
我想要这样的结果。
Key Value
"BPGA", "TEST"
"PPPP", "TEST"
"RM_1000", "MEASUREMENT"
"RM_2000", "MEASUREMENT"
"CDMA", "TEST"
提前致谢!
答案 0 :(得分:0)
您应该使用类似的字典,例如具有多个值的公用密钥,例如:
Dictionary<string, List<string>> dict = new Dictionary<string, List<string>>();
然后在添加值时需要做的就是:
dict.Add("TEST", new List<string>() { /*strings go in here*/ });
然后从密钥中获取所有结果,如:
List<string> testValues = dict["TEST"];
为了确保安全,你应该检查密钥是否存在,即
if (dict.ContainsKey("TEST"))
{
//Get the values
}
然后,要将值添加到当前键,您可以执行以下操作:
dict["TEST"].Add("NewValue");
如果你坚持保持相同的结构,虽然我不推荐它,如下所示:
List<string> testKeys = new List<string>();
foreach (var pairs in dict)
{
if (pair.Value == "TEST")
{
testKeys.Add(pair.Key);
}
}
甚至以下LINQ语句:
List<string> testKeys = dict.Where(p => p.Value == "TEST").Select(p => p.Key).ToList();
要查找列表中的通用查询,请使用:
List<string> values = dict.Where(p => list.Contains(p.Value)).ToList();