c# – 在两个IEnumerable – LINQ之间搜索

嗨,你们可以帮助我吗,我尝试了几件事.
我需要在两个IEnumerables之间搜索,这里是代码.

IEnumerable<Project> Projects = new[] { new Project {id = "1", lan = "test1"},  new Project {id = "2", lan = "test1"}}

IEnumerable<string> lan = new [] { "test1", "test2"};
IEnumerable<string> indexFiltered = ?;

我需要做一个linq查询,返回在LAN中有任何Project.lan的Project.id.

任何的想法?

最佳答案
另一种有效的方法是使用Enumerable.Join,因为它是作为哈希表实现的:

IEnumerable<string> indexFiltered = from p in Projects
                                    join l in lan on p.lan equals l
                                    select p.id;

Why is LINQ JOIN so much faster than linking with WHERE?

Join运算符从第一个表中获取行,然后仅获取第二个表中具有匹配键的行,然后仅获取第三个表中具有匹配键的行.

转载注明原文:c# – 在两个IEnumerable – LINQ之间搜索 - 代码日志