はじめに:私は仕事でこれを見つけ出し、面白い問題だと思った。特別なルールで文字列の集合を並べ替える
はじめにEDIT:すでに解決策がありますが、私はこれに対処する他の方法を探しています。
string
の集合を考える:私は年の降順で、このコレクションをソートしたい
["2015", "2016 New", "2016 Used", "2017 New", "2017 Used", "2018"]
を。
ただし、文字列"New"
を含む年は、文字列"Used"
を含む同じ年の前に来なければならない特別なルールを適用したいと考えています。
期待される結果:
["2018", "2017 New", "2017 Used", "2016 New", "2016 Used", "2015"]
仮定:
コレクションが
"New"
を含む与えられた年の文字列が含まれている場合、コレクションは常に同じ年"Used"
(と副を含むことが含まれますが逆もあります)、それ自体が年を含むことはありません。["2017 New", "2017", "2016 Used", "2016"] // invalid input
年は範囲1000-9999の範囲内になります。
この問題にアプローチする最良の方法は何ですか?
EDIT:
は、ここに私たちのソリューションです:
var l = new[] { "2015", "2016 New", "2016 Used", "2017 New", "2017 Used", "2018" };
var sorted = l.OrderByDescending(i => i.Replace("Used", "Ased")).ToArray();
// ["2018", "2017 New", "2017 Used", "2016 New", "2016 Used", "2015"]
「2017新」は、「使用済み2017」の前に必ずなりますソート。 – Fabio
何か試したことがありますか?私たちはあなたの仕事をしていません。 – HimBromBeere
@Fabioはい、しかし、OPは降順で並べ替えることを望んでいます。したがって、デフォルトのソートでは、 '2018、2017 Used、2017 New、etc etc'となります。 – maccettura