【问题标题】:Where clause on list property列表属性的 Where 子句
【发布时间】:2016-05-26 17:42:38
【问题描述】:

我有两门课:

public class Customer
{
    public string FirstName { get; set; }

    public string LastName { get; set; }

    public List<Product> Product { get; set; }
}

public class Product
{
    public string ProductNumber { get; set; }

    public string ProductColor { get; set; }
}

我想在属性Product (Product.ProductColor == "") 上创建一个子句:

c.Where(x => x.Product.????? == "11").Select(x => x).ToList();

这是怎么做到的?

【问题讨论】:

  • 例如所有具有特定 ProductColor 的客户

标签: c# linq where-clause


【解决方案1】:

我假设您想找到产品编号为 11 的客户。如果是这样,您可以使用函数 Any

var result = c
    .Where(x => x.Product.Any(p => p.ProductNumber == "11"))
    .ToList();

代码仅过滤那些拥有至少一种满足条件ProductNumber == "11"的产品的客户

或者,如果您想找到具有特定颜色的客户,请使用不同的表达方式:

var result = c
    .Where(x => x.Product.Any(p => p.ProductColor == "Color"))
    .ToList();

【讨论】:

    【解决方案2】:

    由于Product真的应该命名为Products)也是一个集合,您必须深入研究该集合。例如,如果您希望所有产品颜色为"11" 的客户列表中的所有Customers,它可能如下所示:

    customers.Where(c => c.Product.Any(p => p.ProductColor == "11"))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-05
      • 1970-01-01
      相关资源
      最近更新 更多