1

私は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... ただChemistryandが欲しい間Botany

適用する適切なキャスティングは何ですか? これらの値に到達するためのより良い方法はありますか?

4

3 に答える 3

4

次のように書くだけです。

var filteredList = students.Where(student => classes.ContainsKey(student));

ここでstudentは、 は であるstringためstudentsWhere()List<string>を適用するだけで済みます。結果は になります。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]);
于 2012-08-27T17:06:50.723 に答える
0

試す:

var filteredList = students.Where(k => classes.ContainsKey(k))
                                     .Select(k => students[k]);
于 2012-08-27T17:07:08.223 に答える
0
var filteredList = students.Where(k => classes.ContainsKey(k))
                                         .Select(k => students[k]);
于 2012-08-27T17:07:45.667 に答える