Mih*_*abo 3 c# linq asp.net-mvc asp.net-mvc-3
我有2个列表返回相同的项目.
<foo>
具有orderType
第一个列表为0和第二个列表为1 的适当性在第一个列表中我进行过滤,我必须将第二个列表中的项目添加到受分页限制的结果中.基本上这是我的最终查询:
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();
Run Code Online (Sandbox Code Playgroud)
这很有效,因为列表1作为主项目,列表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();
Run Code Online (Sandbox Code Playgroud)
编辑:
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]
Run Code Online (Sandbox Code Playgroud)
看起来你错过了三元运算符的最后一部分:
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();
Run Code Online (Sandbox Code Playgroud)
如果您不关心订单,如果ordertype
不是1,那么else
条件是任意的.
归档时间: |
|
查看次数: |
11415 次 |
最近记录: |