我有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
&amp; tag=Botany
...虽然我只想Chemistry
和Botany
。
适用什么样的铸件?有没有更好的方法来达到这些价值?
答案 0 :(得分:4)
你只需写:
var filteredList = students.Where(student => classes.ContainsKey(student));
此处student
为string
,因为students
为List<string>
,因此您只需申请Where()。结果将是IEnumerable<string>
。
如果您想将可枚举内容耗尽到另一个List<string>
,则可以应用ToList():
var filteredList = students.Where(student => classes.ContainsKey(student)).ToList();
如果你想要一个类列表(问题中的代码不清楚),那么你必须将Select()应用于学生的项目类:
var filteredList = students.Where(student => classes.ContainsKey(student))
.Select(student => classes[student]);
答案 1 :(得分:0)
尝试:
var filteredList = students.Where(k => classes.ContainsKey(k))
.Select(k => students[k]);
答案 2 :(得分:0)
var filteredList = students.Where(k => classes.ContainsKey(k))
.Select(k => students[k]);