c# - 干净的 linq 实现以按孙子过滤列表

标签 c# linq

我有一个附加到包含客户端的应用程序的用户列表。我希望通过 Linq 按应用程序和客户端过滤用户列表,并且正在旋转。

理想情况下,我会使用一条语句,其中 Application.Name == “example” 也在 ClientApp.Id == 1 中。

这就是我到目前为止所处的位置,但我在嵌套方面遇到了一些内部大脑问题。任何帮助表示赞赏

var users2 = users.Where(x => x.App.Select(y => y.Name).Contains("example"));

public class User
{
    public string FirstName { get; set; }
    public List<Application> App { get; set; }
}
public class Application
{
    public string Name { get; set; }
    public List<ClientApp> Client { get; set; }
}
public class ClientApp
{
    public string Id { get; set; }
}

最佳答案

您可以使用对 Enumerable.Any 的嵌套调用来过滤此内容:

var filtered = users.Where(u => 
                   u.App.Any(
                      a => a.Name == "example" 
                        && a.Client.Any(c => c.Id == 1)));

关于c# - 干净的 linq 实现以按孙子过滤列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22672574/

相关文章:

c# - 无法验证用户名和密码

c# - 检查类字段事件背后生成字段的属性

linq - 将 .NET 3.5 库与应用程序捆绑在一起,以便它可以在仅安装 .NET 2.0 的计算机上运行?

c# - 将 linq to objects 查询结果放入类型字典中

c# - 仅通过一个字段从对象列表中查找不同的值

C# linq xml 缺少元素给出抛出异常

c# - C# 中的多线程与 Win.Forms 控件

c# - 有没有办法不按ALT就强制显示助记键?

c# - ASP.NET Core - 覆盖默认的 ControllerFactory

c# - 尝试使用 LINQ 以数据库字段作为参数获取不同的值