c# – lambda表达式中的条件
发布时间:2020-12-16 01:53:24 所属栏目:百科 来源:网络整理
导读:我有2个列表返回相同的项目. FOO具有适当的orderType,第一个列表为0,第二个列表为1 在第一个列表中我进行过滤,我必须将第二个列表中的项添加到受分页限制的结果中. 基本上这是我的最终查询: var listFoo= QueryList1.Concat(QueryList2); //(IQueriable)Lis
我有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(); 这很有效,因为列表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(); 编辑: List 1 : id =1,ordertype=0,Date = new DateTime(1950,1,4),[0] id =2,2,1) [1] List 2 : id =1,ordertype=1,5),[2] id =1,2),[3] id =1,3),[4] id =1,4) [5] This should be ordered as follows : [0],[3],[4],[5],[2],[1] 解决方法
看起来你错过了三元运算符的最后一部分:
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(); 如果你不关心订单,如果ordertype不是1,那么else条件是任意的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |