LINQ等效查询

Gil*_*lla 1 c# linq linq-to-objects dictionary list

我有一个

 List<string>     

List<string> students; 
students.Add("123Rob"); 
students.Add("234Schulz"); 
Run Code Online (Sandbox Code Playgroud)

和a

Dictionary<string,string> 

Dictionary<string, string> courses = new Dictionary<string, string>(); 
courses .Add("Rob", "Chemistry");   
courses .Add("Bob", "Math");  
courses .Add("Holly", "Physics"); 
courses .Add("Schulz", "Botany");
Run Code Online (Sandbox Code Playgroud)

我现在的目标是获得一个带有值的List - {Chemistry,Botany}.

换句话说,我试图获得LINQ等价物

select value from [courses]
where [courses].key in 
(
select [courses].key from courses,students where [students].id LIKE '%courses.key%'
)
Run Code Online (Sandbox Code Playgroud)

如何构建LINQ查询?

Rob*_*ito 5

这是正确的答案:

var values = from c in courses
             where students.Any(s => s.IndexOf(c.Key, StringComparison.OrdinalIgnoreCase) >= 0)
             select c.Value;
Run Code Online (Sandbox Code Playgroud)

在我的机器上测试过.希望这可以提供帮助.