2

私には2つのクラスがあります:

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;}
}

NhibernateLinqを使用しています。Persan.Nameでフィルタリングされた注文の合計を取得したい場合は、次のようにします。

var result = (from person in personRepository.Query
             from order in person.Orders
             where person.Name.Contains("off")
             select order).Sum(order => order.Sum);

流暢な構文を使用して同じことを行うにはどうすればよいですか?

4

1 に答える 1

0

これを試して:

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

注文が選択されていないときにこのソリューションがスローするArgumentNullException場合は、次の2ステップのソリューションを試してください。

var orders = personRepository.Query
    .Where(person => person.Name.Contains("off"))
    .SelectMany(person => person.Orders);
var result = orders.Any()
    : orders.Sum(order => order.Sum)
    ? 0;
于 2012-11-01T09:23:17.337 に答える