Blazor,LINQ ORDER BY of String with Quarter and Year

Blazor, LINQ ORDER BY of String with Quarter and Year

我有一个 Blazor Server .Net 6 应用程序,我想使用 LINQ 来解析包含将在下拉列表中使用的季度 - 年份(计数)的字符串。但我想先订购最新的列表。因为它是一个字符串,所以我不能在 LINQ

中使用普通的 Order By
Example data:
Q4 – 2022 (7)
Q3 – 2022 (9)
Q2 – 2022 (10)
Q1 – 2022 (15)
Q4 – 2021 (18)
Q3 – 2021 (5)
Q2 – 2021 (4)
Q1 – 2021 (1)

想知道如何对这个字符串进行排序,以便数据始终按上述顺序出现

TIA

只要您的数据格式一致,您就可以将 OrderByThenByRange 一起使用。

var data = new string[] {
    "Q4 – 2022 (7)",
    "Q3 – 2022 (9)",
    "Q2 – 2022 (10)",
    "Q1 – 2022 (15)",
    "Q4 – 2021 (18)",
    "Q3 – 2021 (5)",
    "Q2 – 2021 (4)",
    "Q1 – 2021 (1)"};

var orderedData = data.OrderBy(d=> d[5..9]).ThenBy(d => d[1..2]);

这按位置 6 到 9(年)的字符排序,然后按 1 到 2(季度)的字符排序。 数据始终与该模式匹配对于此工作至关重要。

Try it out