gpt4 book ai didi

c# - lambda 表达式中的条件顺序

转载 作者:行者123 更新时间:2023-11-30 14:13:08 26 4
gpt4 key购买 nike

我有 2 个返回相同 Item 的列表。 <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,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]

最佳答案

看起来你错过了三元运算符的最后一部分:

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 条件是任意的。

关于c# - lambda 表达式中的条件顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15203220/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com