我正在尝试根据第二个 Baa 列表中的某些值来过滤我的第一个 Foo 列表。
例如。
这是 an example I put up on .NET Fiddle ...
var foos = new List<Foo>
{
new Foo { Name = "Leia" },
new Foo { Name = "Han Solo" },
new Foo { Name = "Chewbacca" },
new Foo { Name = "Luke" },
};
var baas = new List<Baa>
{
new Baa { Alias = "aaaaa" },
new Baa { Alias = "bbbb" },
new Baa { Alias = "Leia" },
new Baa { Alias = "Luke" }
};
// Expected output:
// List<Foo> results = Foo { "Leia" } and Foo { "Luke" };
看看我是如何要求的:通过第二个列表的 Alias
属性过滤第一个列表(按 Name
)。
这将返回一个包含 2 个结果的 Foo
列表?
有什么线索吗?
最佳答案
您可以在 baas
列表中使用 Any
:
foos.Where(f => baas.Any(b => b.Alias == f.Name));
或者使用连接(查询语法更简洁):
var query =
from f in foos
join b in baas on f.Name equals b.Alias
select f;
Here's the code在完整的 .NET Fiddle 中。
关于c# - 如何通过单个属性将两个不同的 .NET 列表相交?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23198032/