linq - 如何使用 LINQ 使用 (.Any()) 过滤子集合的属性

标签 linq nhibernate

如何在 LINQ 中执行以下 SQL?我实际上正在使用 LINQ 到 NHibernate(但由于我认为嵌入了 lambda 表达式,可能在 NHibernate LINQ 中是不可能的)。但我想知道一般如何在 LINQ 中做到这一点。我以前从未遇到过这种情况。

SELECT c.CustomerID, c.CustomerName --etc
FROM   Customers c
       INNER JOIN Orders o
         ON c.CustomerID = o.CustomerID
WHERE  o.Status = 1

public class Customer
{
  public int CustomerID { get; set; }
  public string CustomerName { get; set; }  
  public IList<Order> Orders { get; set; }
}

public class Order
{
  public int OrderID { get; set; }
  public int CustomerID { get; set; }
}

我想做类似的事情:
var customers = 
    (from c in Customers
    where c.Orders.Where(o => o.Status == 1)
    select c).ToList();

谢谢你!

最佳答案

where 语句返回一个集合。你想使用 Any() 方法

var customers = from c in Customers
                where c.Orders.Any(o => o.Status = 1)
                select c

关于linq - 如何使用 LINQ 使用 (.Any()) 过滤子集合的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/810045/

相关文章:

c# - 如何获取作为另一个元素后代的多个 XML 元素

c# - LINQ 过滤基于两个属性的元素

c# - 尝试实现策略模式时出现 WrongClassException(根据自己的 ID 进行区分)

nhibernate - 在 nhibernate 中搜索用户类型列

c# - 使用 ASP.NET 使用数据表对数据进行分组

c# - OrderBy 中的 lambda 表达式有什么意义?

sql-server-2005 - 将 .NET 刻度转换为 SQL Server DateTime

c# - NHibernate 中的多个连接映射

multithreading - 无状态 session 线程安全吗?

c# - 使用 LINQ 比较 C# 中的两个列表并将缺失项添加到实体类的最简单方法