我无法通过指定值来获取 key 。我可以实现这一目标的最佳方法是什么?

var st1= new List<string> { "NY", "CT", "ME" };
var st2= new List<string> { "KY", "TN", "SC" };
var st3= new List<string> { "TX", "OK", "MO" };
var statesToEmailDictionary = new Dictionary<string, List<string>>();
statesToEmailDictionary.Add("test1@gmail.com", st1);
statesToEmailDictionary.Add("test2@gmail.com", st2);
statesToEmailDictionary.Add("test3@gmail.com", st3);

var emailAdd = statesToEmailDictionary.FirstOrDefault(x => x.Value.Where(y => y.Contains(state))).Key;

最佳答案

FirstOrDefault 的返回值将是 KeyValuePair<string, List<string>> ,因此要获取 key ,只需使用 Key 属性。像这样:

var emailAdd = statesToEmailDictionary
    .FirstOrDefault(x => x.Value.Contains(state))
    .Key;

或者,这是查询语法中的等效项:
var emailAdd =
    (from p in statesToEmailDictionary
     where p.Value.Contains(state)
     select p.Key)
    .FirstOrDefault();

关于c# - 从值中获取键 - Dictionary<string, List<string>>,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16860643/

10-15 03:07
查看更多