の最新の記録は私が現在のLINQ:ダイナミック各グループ
マイモデル
public class Orders
{
public int OrderId ;
public ICollection<OrderStatuses> Statuses;
}
public class Statuses
{
public int StatusId;
public int OrderId;
public string Note;
public DateTime Created;
}
私のサンプル・データ以下の動的LINQの式に問題がネストされたサブクエリ内の句をゲット:
Orders
| ID | Name |
----------------------
| 1 | Order 01 |
| 2 | Order 02 |
| 3 | Order 03 |
Statuses
|ID | OrderId | Note | Created |
---------------------------------------
| 1 | 1 | Ordered | 2016-03-01|
| 2 | 1 | Pending | 2016-04-02|
| 3 | 1 | Completed | 2016-05-19|
| 4 | 1 | Ordered | 2015-05-19|
| 5 | 2 | Ordered | 2016-05-20|
| 6 | 2 | Completed | 2016-05-19|
| 7 | 3 | Completed | 2016-05-19|
私はノートの価値がと等しい数の注文を受け取りたいと思います。と最大作成時間。この場合、この動的LINQの式を解決する方法を私に勧めてください以下 は、ここに私のアイデア私は、クエリ
| Name | Note | Last Created|
-------------------------------------|
| Order 01 | Ordered | 2016-03-01 |
| Order 02 | Ordered | 2016-05-20 |
から期待注文のサンプル数であるが、それは間違った方法に
var outer = PredicateBuilder.True<Order>();
var orders = _entities.Orders
.GroupBy(x => x.OrderId)
.Select(x => new { x.Key, Created = x.Max(g => g.Created) })
.ToArray();
var predicateStatuses = PredicateBuilder.False<Status>();
foreach (var item in orders)
{
predicateStatuses = predicateStatuses.Or(x => x.OrderId == item.Key && x.Created == item.Created);
}
var predicateOrders = PredicateBuilder.False<JobOrder>();
predicateOrders = predicateOrders.Or(predicateStatuses); (I don't how to passed expression which different object type (Order and Status) here or I have to write an extension method or something
outer = outer.And(predicateOrders);
を思えています。 ありがとうございます。
本当にありがとうございましたが、私はnameプロパティを忘れてしまったと私はまさに私の問題デモ用のサンプルモデルを作成しました。私のコードでは、私はすでに動的なLinqを実装していますので、私はまだ動的なLinqのソリューションを探しています – nvtthang
見つけましたhttp://stackoverflow.com/questions/418609/how-to-do-subquery-in-linq reference my質問 – nvtthang