2016-11-23 6 views
0

私は次の3次元ディクショナリを持っています。3次元ディクショナリをCで値でソート

class CopyDir 
{ 
    public class MyFileInfo 
    { 
     public int Num{ get; set; } 
     public long Size { get; set; } 
    } 
    public static Dictionary<string, MyFileInfo> logInfo; 

サイズフィールドに基づいて辞書を並べ替える必要があります。

logInfo.OrderByはあなたがusingディレクティブが欠落している(「辞書」は見つけることができるタイプの最初の引数を受け入れる「のOrderBy」 エラーCS1061「辞書」「のOrderBy」となし拡張メソッドの定義が含まれていないと言いますか、

+2

三次元はどこですか?私はただ一つの線形辞書しか見ない。 –

+0

'logInfo.OrderBy(x => x.Value.Size)'は動作しませんでしたか? –

+0

@MohitShrivastavaエラーディクショナリにはOrderByと拡張子の定義が含まれていません... –

答えて

1

LINQ拡張を使用して簡単に並べ替えることができます。私たちは辞書の値をソートしています。

var sorted = logInfo.Values.OrderBy(x=>x.Size); 
1

あなたがにしたい場合は、辞書を表す(例えば、コンソール上でプリントアウト) それらの値が発注し、LINQの

var result = logInfo 
    .OrderBy(pair => pair.Value.Size) 
    .ThenBy(pair => pair.Num); // in case of tie, let's order by Num 

テスト

var test = result 
    .Select(item => $"{item.Key,6}: Size = {item.Size,6}; Num = {item.Num,6}"); 

    Console.Write(string.Join(Environment.NewLine, test)); 
0

をuingしようとはこれはあなたのためのトリックを行うかもしれません

logInfo.OrderBy(x=>x.Value.Size); 
0
var sorted = logInfo.OrderBy(pair => pair.Value.Size); 
関連する問題