2016-09-01 4 views
0

私はpraticularディレクトリにイメージのパス文字列のソートされたリストを取得しようとしています。 ディレクトリには、 "1.png"、 "2.png"などの名前で43個の画像が含まれています。C#イメージのソートされたリストを取得する

var sorted = Directory.GetFiles(Directory.GetCurrentDirectory(), "*.png").OrderBy(f => f);   
    foreach (string img in sorted) 
    { 
    Console.WriteLine(img); 
    } 

私は

Cを得ている結果:Users \ユーザー\ ITAPI \ OneDrive \מסמכים\プロジェクト\ Visual Studioの2013 \ \ドロー\を描くビン

この

は私のコードです\デバッグ\の1.png C:\ Users \ユーザーITAPI \ OneDrive \מסמכים\プロジェクト\ Visual Studioの2013 \ \描くDrawの\ binに\デバッグ\ 10.png C:\ Users \ユーザーITAPI \ OneDrive \מסמכים\ Visual Studioの2013 \ Projects \ Draw \ Draw \ bin \ Debug \ 11.png C:\ Users \ itapi \ OneDrive \ Visual Studio 2013 \ Projects \ Draw \ Draワット\ binに\デバッグ\ 12.png C:\ Users \ユーザーITAPI \ OneDrive \מסמכים\プロジェクト\ Visual Studioの2013 \ \描くDrawの\ binに\デバッグ\ 13.png C:\ Users \ユーザーITAPI \ OneDrive \מסמכים\ Visual Studio 2013 \ Projects \ Draw \ Draw \ bin \ Debug \ 14.png C:\ Users \ itapi \ OneDrive \ Visual Studio 2013 \ Projects \ Draw \ Draw \ bin \ Debug \ 15.png C:\ Visual Studio 2013 \ Projects \ Draw \ Draw \ bin \ Debug \ 16.png C:\ Users \ itapi \ OneDrive \ Visual Studio 2013 \ Projects \ Draw \ Draw \ bin \ Debugユーザーは、 \ 17.png C:\ユーザープロジェクト\ \ ITAPI \ OneDrive \מסמכים\ Visual Studioの2013:\ユーザープロジェクト\ \ ITAPI \ OneDrive \מסמכים\ Visual Studioの2013 \描く\は\ binに\デバッグ\ 18.png Cを描きます¥Draw¥Draw¥bin¥Debug¥19.png C:¥Users¥itapi¥OneDrive¥Support¥Visual Studio 2013¥Projects¥Draw¥Draw¥bin¥Deバグの\ 2.png C:\ Users \ユーザーITAPI \ OneDrive \מסמכים\プロジェクト\ Visual Studioの2013 \ \描くDrawの\ binに\デバッグ\ 20.png C:\ Users \ユーザーITAPI \ OneDrive \מסמכים\ Visual Studioの2013 \プロジェクト\描く\ \ binに\デバッグ\ 21.png C描く:\ Users \ユーザーITAPI \:\ binに\デバッグ\ 22.png Cを描く\描く\ \ユーザープロジェクト\ \ ITAPI \ OneDrive \מסמכים\ Visual Studioの2013 OneDrive \ Visual Studio 2013 \ Projects \ Draw \ Draw \ bin \ Debug \ 23.png C:\ Users \ itapi \ OneDrive \ Visual Studio 2013 \ Projects \ Draw \ Draw \ bin \ Debug \ 24.png C:\ドローを描く\ \ユーザープロジェクト\ \ ITAPI \ OneDrive \מסמכים\ Visual Studioの2013:\ユーザープロジェクト\ \ ITAPI \ OneDrive \מסמכים\ Visual Studioの2013 \描く\は\ binに\デバッグ\ 25.png Cを描きます\ bin \ Debug \ 26.png C:\ Users \ itapi \ OneDrive \ Visual Studio 2013 \ Projects \ Draw \ Draw \ bin \ Debug \ 27.pnグラム C:\ Users \ユーザーITAPI \ OneDrive \מסמכים\プロジェクト\ Visual Studioの2013 \ \描くDrawの\ binに\デバッグ\ 28.png C:\ Users \ユーザーITAPI \ OneDrive \מסמכים\プロジェクト\ Visual Studioの2013 \描く\ドロー\ binに\デバッグ\ 29.png C:\ Users \ユーザーITAPI \ OneDrive \מסמכים\プロジェクト\ Visual Studioの2013 \ \ドロー\ビン\デバッグ\の3.pngを描く C:\ Users \ユーザーITAPI \ OneDrive \מסמכים\ \ binに\デバッグ\ 31.png Cを描く\描く\ \ユーザープロジェクト\ \ ITAPI \ OneDrive \מסמכים\ Visual Studioの2013:プロジェクト\ Visual Studioの2013 \描く\は\ binに\デバッグ\ 30.png Cを描く\ Visual Studio 2013 \ Projects \ Draw \ Draw \ bin \ Debug \ 32.png C:\ Users \ itapi \ OneDrive \ Visual Studio 2013 \ Projects \ Draw \ Draw \ bin \ Debug \ 33.png C:\ Users \ itapi \ OneDrive \ Visual Studio 2013 \ Projects \ Draw \ Draw \ bin \ Debug \ 34.png C:\ドローを描く\ \ユーザープロジェクト\ \ ITAPI \ OneDrive \מסמכים\ Visual Studioの2013:\ユーザープロジェクト\ \ ITAPI \ OneDrive \מסמכים\ Visual Studioの2013 \描く\は\ binに\デバッグ\ 35.png Cを描きます\デバッグ\ 36.png C \ binに:\ Users \ユーザーITAPI \ OneDrive \מסמכים\ビジュアル:\ユーザープロジェクト\ \ ITAPI \ OneDrive \מסמכים\ Visual Studioの2013 \描く\は\ binに\デバッグ\ 37.png Cを描きますプロジェクト\ Studioの2013 \ Drawの\ \ binに\デバッグ\ 38.png C描く:\ユーザー:描画\ \ユーザープロジェクト\ \ ITAPI \ OneDrive \מסמכים\ Visual Studioの2013 \は\ binに\デバッグ\ 39.png Cを描きますVisual Studio 2013 \ Projects \ Draw \ Draw \ bin \ Debug \ 4.png C:\ Users \ itapi \ OneDrive \ Visual Studio 2013 \ Projects \ Draw \ Draw \ bin \ Debug \ 40。PNG C:\ Users \ユーザーITAPI \ OneDrive \מסמכים\プロジェクト\ Visual Studioの2013 \ \描くDrawの\ binに\デバッグ\ 41.png C:\ Users \ユーザーITAPI \ OneDrive \מסמכים\プロジェクト\ Visual Studioの2013 \描く\ドロー\ binに\デバッグ\ 42.png C:\ Users \ユーザーITAPI \ OneDrive \מסמכים\プロジェクト\ Visual Studioの2013 \ \ドロードロー\ binに\デバッグ\ 43.png C:\ Users \ユーザーITAPI \ OneDrive \מסמכים\プロジェクト\ Visual Studioの2013 \ \ドロー\ビン\デバッグ\の5.pngを描く C:\ Users \ユーザーITAPI \ OneDrive \מסמכים\プロジェクト\ Visual Studioの2013 \ \ドロー\ビン\デバッグ\の6.png Cを描く:\ Users \ユーザーITAPI \ OneDrive \מסמכים\プロジェクト\ Visual Studioの2013 \ \ドロー\ビン\デバッグ\の7.pngを描く C:\ Users \ユーザーITAPI \ OneDrive \מסמכים\プロジェクト\ Visual Studioの2013 \ \ドロー\ビン\デバッグを描きます\ 8.png C:\ Users \ itapi \ OneDrive \ Visual Studio 2013 \ Projects \ Draw \ Draw \ bin \ Debug \ 9.png

何らかの理由で、私は適切なアルファベット順ソートリストを取得できません。LINQ Sort()メソッドを使ってみましたが、成功しませんでした。

解決策を探しています。

ありがとうございました。

+1

を解析することができない場合、それは数値的に正しくありません。 –

答えて

2

理由は、それが文字列のソートのための規則によって発注されるので、それが文字列であるということです。何がやりたいことは、それによって多数のそれの一部と順番を取ることです。

Directory.GetFiles(Directory.GetCurrentDirectory(), "*.png") 
     .OrderBy(f => int.Parse(f.Split('.')[0])); 

ない場合Splitを使用することにより、あなたはGetFileNameWithoutExtensionを使用するようにスコットの提案を使用することができます。

Directory.GetFiles(Directory.GetCurrentDirectory(), "*.png") 
     .OrderBy(f => int.Parse(Path.GetFileNameWithoutExtension(f))); 

に入れたままにしてくださいこれは、すべてのファイル名が(number).pngであることを前提とした単純な解決方法であることに注意してください。それはあなたが最初にそれが数値であるかどうかをチェックして、アルファベット順に正しい

+2

私は '.OrderBy(f => int.Parse(Path.GetFileNameWithoutExtension(f)));)を使用していました。私が公表しようとしていたものとほとんど同じです。 –

+0

@ScottChamberlain良い提案:)そのように更新されます。ありがとう –

関連する問題