我有一个 List<string>
List<string> students;
students.Add("Rob");
students.Add("Schulz");
和一个Dictionary<string,string>
Dictionary<string, string> classes= new Dictionary<string, string>();
classes.Add("Rob", "Chemistry");
classes.Add("Bob", "Math");
classes.Add("Holly", "Physics");
classes.Add("Schulz", "Botany");
我现在的目标是获得一个包含值的列表 - Chemistry
和 Botany
- 我正在使用这个
var filteredList = students.Where(k => classes.ContainsKey(k))
.Select(k => new { tag = students[k] });
在尝试枚举值时 - 我能够获得 - tag=Chemistry
& tag=Botany
...虽然我只想要 Chemistry
和 Botany
.
什么是合适的转换?有没有更好的方法来获得这些值(value)?
你只需要写:
var filteredList = students.Where(student => classes.ContainsKey(student));
在这里,student
是 string
, 自 students
是 List<string>
, 所以你只需要申请 Where() .结果将是 IEnumerable<string>
.
可以申请ToList()如果你想用尽枚举到另一个 List<string>
:
var filteredList = students.Where(student => classes.ContainsKey(student)).ToList();
如果你想要一个类列表(从你问题的代码中看不清楚),那么你必须申请 Select()从学生项目项目:
var filteredList = students.Where(student => classes.ContainsKey(student))
.Select(student => classes[student]);
我是一名优秀的程序员,十分优秀!