Linq:选择属性集合

Linq:选择属性集合,linq,fluent-nhibernate,linq-to-nhibernate,Linq,Fluent Nhibernate,Linq To Nhibernate,我有两门课: public class Person { public int Id{get;set;} public string Name{get;set;} public List<Order> Orders{get;set;} } public class Order { public int Id{get;set;} public string Data{get;set;} public decimal Sum{get;set;} }

我有两门课:

public class Person
{
   public int Id{get;set;}
   public string Name{get;set;}
   public List<Order> Orders{get;set;}
}
public class Order
{
   public int Id{get;set;}
   public string Data{get;set;}
   public decimal Sum{get;set;}
}
如何使用流畅的语法来实现同样的效果?

试试以下方法:

var result = personRepository.Query
    .Where(person => person.Name.Contains("off"))
    .SelectMany(person => person.Orders)
    .Sum(order => order.Sum);
如果此解决方案在未选择订单时引发
ArgumentNullException
,请尝试此两步解决方案:

var orders = personRepository.Query
    .Where(person => person.Name.Contains("off"))
    .SelectMany(person => person.Orders);
var result = orders.Any()
    : orders.Sum(order => order.Sum)
    ? 0;

非常感谢。若所选订单的计数为0,为什么应用程序引发ArgumentNullException?
var orders = personRepository.Query
    .Where(person => person.Name.Contains("off"))
    .SelectMany(person => person.Orders);
var result = orders.Any()
    : orders.Sum(order => order.Sum)
    ? 0;