gpt4 book ai didi

c# - 按日期订购 List,但它有一个字符串 ID,如果该 ID 在集合中以不同的日期重复出现,则应出现在它的下方

转载 作者:太空宇宙 更新时间:2023-11-03 18:36:49 25 4
gpt4 key购买 nike

我无法更好地表达我在标题中的要求。

这就是我要找的。

我有一个特定对象的无序列表我有一个 DateTimeString属性(property)。

String 属性有像这样的值(注意它是一个字符串,而不是一个数字,它总是有 K 字母,我应该只用数字排序):

K07000564, 
K07070000
K07069914
K07026318
K07019189

我想要的是按日期排序列表...但是在排序时,如果字符串值与其他日期一起出现在集合中,我想在这个日期之后排序(按日期也在 IdFinders 的 miniGroup 中) ...然后继续订购...

像这样的东西:

编辑

我编辑了示例以阐明按 IdFinder 排序将不起作用...我需要按日期排序.. 如果按日期排序时 IdFinder 在集合中出现不止一次应该在最后一个之后显示它们, 然后通过每个 idfinder 继续订购其余的等等

ID         Date
**K07000564** Today
K07000562 Yesterday
K07000563 The Day Before Yesterday
**K07000564** The day before the day before yesterday

应该是

K07000564 Today
K07000564 The day before the day before yesterday
K07000562 Yesterday
K07000563 The Day Before Yesterday

我之前在一个项目中的 SQL Server 2008 中实现了这个:

WITH B
AS
(
SELECT
ID,
MAX(DATE_COLUMN) DATE_COLUMN,
ROW_NUMBER() OVER (ORDER BY MAX(DATE_COLUMN) DESC) RN
FROM MYTABLE
GROUP BY ID

)

SELECT *
FROM MYTABLE c
, B
WHERE ID= b.ID
ORDER BY b.rn, c.DATE_COLUMN desc;

但我不擅长使用 Linq,我不知道如何在 Linq 中执行此操作。

可能是一个重要说明我在 .NEt 2.0 中,所以没有可用的 LINQ 但我正在使用 Linqbridge使用 Linq。

我试过了,但是你会注意到,这是行不通的

oList.OrderBy(i => i.IdFinder).ThenByDescending(i => i.OperationDate);

我希望已经解释清楚了

最佳答案

var result = oList.OrderByDescending(x => x.OperationDate)
.GroupBy(x => x.IdFinder)
.SelectMany(x => x);

关于c# - 按日期订购 List<T>,但它有一个字符串 ID,如果该 ID 在集合中以不同的日期重复出现,则应出现在它的下方,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14074309/

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