3

同じ Item を返す 2 つのリストがあります。 最初のリストでは 0、2 番目のリストでは 1<foo>の妥当性があります。最初のリストでフィルタリングを行い、2 番目のリストの項目をページネーションによって制限された結果に追加する必要があります。orderType基本的にこれは私の最終的なクエリです:

var listFoo= QueryList1.Concat(QueryList2);  //(IQueriable)
List<foo> listFoo =listFoo.OrderByDescending(r => r.ID)
                          .ThenBy(d =>d.orderType)
                          .Skip((currentPageIndex - 1) * pageSize)
                          .Take(pageSize)
                          .ToList();

リスト 1 がメイン アイテムとして機能し、リスト 2 が最初のリストの詳細として機能するため、これはうまく機能します。また、フィルターは最初のリストでのみ機能するはずです。しかし、ここで問題が発生します。2 番目のリストを日付だけで並べ替えるにはどうすればよいですか。日付順に詳細をリストする必要があります。基本的に私は次のようなものが必要です:

List<foo> listFoo =listFoo.OrderByDescending(r => r.ID)
                          .ThenBy(d =>d.orderType)
                          .ThenBy(x=>(x.ordertype==1)?x.Date)
                          .Skip((currentPageIndex - 1) * pageSize)
                          .Take(pageSize)
                          .ToList();

編集 :

List 1 : 
id =1,ordertype=0,Date = new DateTime(1950,1,4),  [0]
id =2,ordertype=0,Date = new DateTime(1950,2,1)   [1]
List 2 :
id =1,ordertype=1,Date = new DateTime(1950,1,5),  [2]
id =1,ordertype=1,Date = new DateTime(1950,1,2),  [3]
id =1,ordertype=1,Date = new DateTime(1950,1,3),  [4]
id =1,ordertype=1,Date = new DateTime(1950,1,4)   [5]

This should be ordered as follows : 
[0],[3],[4],[5],[2],[1]
4

1 に答える 1

7

三項演算子の最後の部分が欠落しているようです:

listFoo = listFoo.OrderByDescending(r => r.ID)
                           .ThenBy(d =>d.orderType)
                           .ThenBy(x => (x.ordertype==1) ? x.Date : DateTime.MinValue)
                           .Skip((currentPageIndex - 1) * pageSize)
                           .Take(pageSize)
                           .ToList();

順序を気にしない場合 ifordertypeが 1 以外の場合、else条件は任意です。

于 2013-03-04T14:00:21.863 に答える