1

したがって、myNumber というプロパティを含むクラスがあります。次のようになります。

public class MyThing
{
    public int name{ get; set; }
    public string myNumber{ get; set; }
}

myNumber に含まれる値は、次のようになり12-24ます12-024

これらのオブジェクト ( ) のコレクションを myNumber の降順で並べ替えたいのIEnumerable<MyThing> myCollectionですが、どうすればよいかわかりません。

試してみmyCollection.OrderByDescending(f => f.myNumber)ましたが、期待したほどではありませんでした。私は次のように注文することを期待12-22, 13-01, 12-030します:

13-01 
12-030
12-22
4

2 に答える 2

2

のように注文できますVersion。したがって、分割し'-'て最初の部分をメジャー バージョンとして使用し、最後の部分をマイナー バージョンとして使用できます。

var orderedLikeVersion = myCollection
    .Select(t => new
    {
        Thing = t,
        Parts = t.myNumber.Split('-')
    }).Select(x => new
    {
        x.Thing,
        Version = new Version(int.Parse(x.Parts[0]), int.Parse(x.Parts[1]))
    })
    .OrderByDescending(x => x.Version)
    .Select(x => x.Thing);

希望する結果でデモを行います。

于 2013-01-09T22:02:24.900 に答える
0

私はあなたがこの注文を得たと思いますか?

13-01 
12-22
12-030

これは、アルファベットの規則によって正しいでしょう。0 の後に 2 があるため、12-2* は 12-0* より大きくなります。

22 は 03 よりも大きく、2 は 0 よりも大きいため、数値規則によっても正しいようです。

予想される順番がよくわかりませんが、なぜ 12-030 が 12-22 より大きいと解釈するのですか? ハイフンの後の部分は、先頭のゼロを切り捨てることができるはずですか? そうすれば、12-30 は 12-030 に等しくなり、先行する 0 の目的は何なのかを自問します。

于 2013-01-09T21:59:36.013 に答える