c# - 如何通过单个属性将两个不同的 .NET 列表相交?

标签 c# .net

我正在尝试根据第二个 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/

相关文章:

c# - 快速检查 C# 命名空间

c# - 在 Entity Framework 查询中过滤子项

c# - WCF 超时的最大值是多少?

c# - 如何从 IP 地址字符串中删除端口号

.net - 如何使按钮的宽度自动适应按钮的文本?

c# - 在内存中存储大量股票数据的最佳方式(变量)

c# - 需要帮助将(int)值分配给组合框项(字符串)

c# - 如何获得使用audioSettings.dspTime传递的准确时间方法?

c# - 捕获 OutOfMemoryException 是如何工作的?

c# - 使用 ViewModel 的 Winforms 数据绑定(bind)