c# - 由于 DayOfWeek 对字符串数组进行排序
问题描述
我有一个字符串数组
string[] days={ "1", "2", "6" }
我想DayOfWeek
越来越多地对其进行排序。例如,“1”是星期一,“2”是星期二,“6”是星期六。今天是星期四。所以最近的一个是星期六,星期一,星期二。所以最终数组将是
days={ "6", "1", "2" }
我找不到任何解决方案来对它们进行排序。我怎样才能对它们进行排序。
提前致谢。
解决方案
您可以为此使用 LINQ:
string[] days = { "1", "2", "6" };
var today = (int)(DateTime.Now.DayOfWeek + 6) % 7;
var result = days
.GroupBy(x => int.Parse(x) > today)
.OrderByDescending(x => x.Key)
.SelectMany(g => g.OrderBy(x => x));
Console.WriteLine("[{0}]", string.Join(", ", result));
# [6, 1, 2]
执行以下操作:
- 将之前和之后的日子分成两组
- 对前几天的后几天进行排序(降序)
- 对每个组进行排序(升序)
推荐阅读
- python - 在 django rest 框架中将 python 字典转换为 json 类型
- c# - How to write just one query to divide result from 2 query?
- arduino - 当输入的结尾为 0 字符时,Arduino SHA1 在读取串行监视器时无法正常工作
- sql - 在 ORACLE PLSQL 中将逗号分隔的键值对存储到表中
- c# - Linq 动态查询问题 - 运算符“&&”与操作数类型“字符串”和“布尔”不兼容
- node.js - 'pm2' 未被识别为内部或外部命令
- javascript - 在 Express js 中等待请求
- java - IBM ODM Rule Execution Server Repository 未加载
- javascript - 对象可能为“空”。TS2531 与 TypeScript 反应
- sql - 根据字符串重写 NVL 和 select 语句