第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

由于 DayOfWeek 對字符串數(shù)組進行排序

由于 DayOfWeek 對字符串數(shù)組進行排序

C#
紫衣仙女 2022-10-23 16:12:09
我有一個字符串數(shù)組string[] days={ "1", "2", "6" }我想DayOfWeek越來越多地對其進行排序。例如,“1”是星期一,“2”是星期二,“6”是星期六。今天是星期四。所以最近的一個是星期六,星期一,星期二。所以最終數(shù)組將是days={ "6", "1", "2" }我找不到任何解決方案來對它們進行排序。我怎樣才能對它們進行排序。提前致謝。
查看完整描述

3 回答

?
青春有我

TA貢獻1784條經(jīng)驗 獲得超8個贊

您可以為此使用 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í)行以下操作:

  1. 將之前和之后的日子分成兩組

  2. 對前幾天的后幾天進行排序(降序)

  3. 對每個組進行排序(升序)


查看完整回答
反對 回復 2022-10-23
?
翻閱古今

TA貢獻1780條經(jīng)驗 獲得超5個贊

String 解釋起來有點復雜,所以我用 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);

});

簡寫


Array.Sort(days, (d1, d2) => (d1 < today ? d1 + 7 : d1).CompareTo(d2 < today ? d2 + 7 : d2));

https://dotnetfiddle.net/QsVnIr


查看完整回答
反對 回復 2022-10-23
?
MMTTMM

TA貢獻1869條經(jīng)驗 獲得超4個贊

我不知道您是否想要就地排序,但如果您不想更改數(shù)組(或?qū)⒏嗵幚礞溄拥綌?shù)組),那么您可以使用 LINQ 對數(shù)組進行排序


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如果你想走那條路,你也可以在方法中使用類似的邏輯


查看完整回答
反對 回復 2022-10-23
  • 3 回答
  • 0 關注
  • 137 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號