我无法更好地表达我在标题中的要求。
这就是我正在寻找的。
我有一个特定对象的无序列表,我有一个DateTime
和String
属性。
String 属性具有像这样的值(请注意,它是一个字符串,而不是数字,它总是有 K 字母,我应该只用数字排序):
K07000564,
K07070000
K07069914
K07026318
K07019189
我想要的是按日期订购列表...但是在订购时,如果字符串值与其他日期一起出现在集合中,我想在此日期之后订购它们(按日期也在那个迷你 IdFinders 组中)...然后继续下单...
像这样的东西:
编辑
我编辑了示例以阐明按 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);
我希望已经清楚地解释了这一点