0

1対多の関係CustomerのエンティティとエンティティがあるとしSalesます。最近の売上がN個のすべての顧客を取得するにはどうすればよいですか?

var result = Customers.Where(c => c.Sales.Any());

これにより、すべての顧客にすべての売上が返されます。各顧客から2つの販売記録が必要な場合はどうなりますか?

P / S:クエリ構文でそれを行うことができます。メソッド構文の解決策を探しています。メソッド構文形式でそれらをチェーンする方法がわかりません

var result = from cust in context.Customers
             select new
             {
                 Customers = cust,
                 Sales = cust.Sales.OrderBy(s => s.Date).Take(2)
             };

これは機能しますが、これが最善の方法かどうかはわかりません。

編集:OK、ここに含めたクエリ構文も機能していないことがわかりました。匿名タイプののみSalesが実質的に2レコードに削減されます。

var filtered = result.AsEnumerable().Select(r => r.Customers);

これを行うと、すべての売上を含む顧客のリストが表示されます

4

1 に答える 1

1

ここで説明されているようにプロジェクトを行うことができます

var dbquery = Customers.Select( c => new { 
                        Customer = c,
                        Sales = c.Sales.OrderBy(s => s.Date)
                             .Take(2).Select( s => new { s, s.SalesDetails})
                  });

var customers = dbquery 
   .AsEnumerable() 
   .Select(c => c.Customer);
于 2012-05-03T17:00:54.977 に答える