2

C# アプリケーションに問題があります... データベースに学校のクラスがいくつかあります。それらを並べ替えるには、文字列比較により結果が次のようになります

10-C
11-C
8-B
9-A

しかし、文字列に存在する最初の整数に基づいて整数ソートが必要です...つまり

8-B
9-A
10-C
11-C

理解していただければ幸いです...これを試しましたが、例外がスローされます

var query = cx.Classes.Select(x=>x.Name)
                .OrderBy( x=>  new string(x.TakeWhile(char.IsDigit).ToArray()));

助けてください...クラスに基づいて注文したい....

4

4 に答える 4

5

多分Splitするでしょうか?

.OrderBy(x => Convert.ToInt32(x.Split('-')[0]))
.ThenBy(x => x.Split('-')[1])
于 2013-09-12T12:22:24.757 に答える
1

入力の形式が十分であれば、次のようになります。

        var maxLen = cx.Classes.Max(x => x.Name.Length);
        var query =  cx.Classes.Select(x => x.Name).OrderBy(x => x.PadLeft(maxLen));
于 2013-09-12T12:47:49.990 に答える
0

例6のように、データとして指定された長さの左パディングとして0を追加できます

.OrderBy(x => x.PadLeft(6, '0'))
于 2013-09-12T12:38:24.520 に答える