3 回答
TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超8個(gè)贊
您可以為此使用 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]
執(zhí)行以下操作:
將之前和之后的日子分成兩組
對(duì)前幾天的后幾天進(jìn)行排序(降序)
對(duì)每個(gè)組進(jìn)行排序(升序)
TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超5個(gè)贊
String 解釋起來有點(diǎn)復(fù)雜,所以我用 int 代替。
讓星期幾總是不小于今天,然后比較。
int[] days = { 1, 2, 6 };
int today;
Array.Sort(days, (d1, d2) =>
{
if(d1 < today)
d1 += 7;
if(d2 < today)
d2 += 7;
return d1.CompareTo(d2);
});
簡(jiǎn)寫
Array.Sort(days, (d1, d2) => (d1 < today ? d1 + 7 : d1).CompareTo(d2 < today ? d2 + 7 : d2));
https://dotnetfiddle.net/QsVnIr
TA貢獻(xiàn)1869條經(jīng)驗(yàn) 獲得超4個(gè)贊
我不知道您是否想要就地排序,但如果您不想更改數(shù)組(或?qū)⒏嗵幚礞溄拥綌?shù)組),那么您可以使用 LINQ 對(duì)數(shù)組進(jìn)行排序
var today = (int)DayOfWeek.Thursday;
int weekDays = 7;
string[] days = { "1", "2", "6" };
var sortedDays = days.Select(int.Parse).OrderBy(d => d > today ? d - today : d + weekDays - today);
Array.Sort如果你想走那條路,你也可以在方法中使用類似的邏輯
- 3 回答
- 0 關(guān)注
- 146 瀏覽
添加回答
舉報(bào)
