-1

こんにちは、この辞書を int 値でソートするのに少し問題があります。

これは辞書です:

_cleanHelper = 
    new Dictionary<Direction, Dictionary<CleanTypes, List<List<int>>>>()
{
    {
        Direction.North, new Dictionary<CleanTypes, List<List<int>>>()
        {
            {
                CleanTypes.Walled, new List<List<int>>()
                { 
                    new List<int>()
                    {
                        0, -1
                    },
                    new List<int>()
                    {
                        1, -1
                    },
                    new List<int>()
                    {
                        1, 0
                    },
                    new List<int>()
                    {
                        1, 1
                    }, 
                    new List<int>()
                    {
                        0, 1
                    }
                }
            },
            {
                CleanTypes.Close, new List<List<int>>()
                { 
                    new List<int>()
                    {
                        0, 0
                    }
                }
            },
            {
                CleanTypes.Recurse, new List<List<int>>()
                { 
                    new List<int>()
                    {
                        -1, 0
                    }
                }
            }
        }
    },
    {
        Direction.South, new Dictionary<CleanTypes, List<List<int>>>()
        {
            {
                CleanTypes.Walled, new List<List<int>>()
                { 
                    new List<int>()
                    {
                        0, -1
                    },
                    new List<int>()
                    {
                        -1, -1
                    },
                    new List<int>()
                    {
                        -1, 0
                    },
                    new List<int>()
                    {
                        -1, 1
                    }, 
                    new List<int>()
                    {
                        0, 1
                    }
                }
            },
            {
                CleanTypes.Close, new List<List<int>>()
                { 
                    new List<int>()
                    {
                        0, 0
                    }
                }
            },
            {
                CleanTypes.Recurse, new List<List<int>>()
                { 
                    new List<int>()
                    {
                        1, 0
                    }
                }
            }
        }
    },
    {
        Direction.West, new Dictionary<CleanTypes, List<List<int>>>()
        {
            {
                CleanTypes.Walled, new List<List<int>>()
                { 
                    new List<int>()
                    {
                        -1, 0
                    },
                    new List<int>()
                    {
                        -1, 1
                    },
                    new List<int>()
                    {
                        0, 1
                    },
                    new List<int>()
                    {
                        1, 1
                    }, 
                    new List<int>()
                    {
                        1, 0
                    }
                }
            },
            {
                CleanTypes.Close, new List<List<int>>()
                { 
                    new List<int>()
                    {
                        0, 0
                    }
                }
            },
            {
                CleanTypes.Recurse, new List<List<int>>()
                { 
                    new List<int>()
                    {
                        0, -1
                    }
                }
            }
        }
    },
    {
        Direction.East, new Dictionary<CleanTypes, List<List<int>>>()
        {
            {
                CleanTypes.Walled, new List<List<int>>()
                { 
                    new List<int>()
                    {
                        -1, 0
                    },
                    new List<int>()
                    {
                        -1, -1
                    },
                    new List<int>()
                    {
                        0, -1
                    },
                    new List<int>()
                    {
                        1, -1
                    }, 
                    new List<int>()
                    {
                        1, 0
                    }
                }
            },
            {
                CleanTypes.Close, new List<List<int>>()
                { 
                    new List<int>()
                    {
                        0, 0
                    }
                }
            },
            {
                CleanTypes.Recurse, new List<List<int>>()
                { 
                    new List<int>()
                    {
                        0, 1
                    }
                }
            }
        }
    }
};

実行時にこれのコピーをいくつか作成し、それらを整数値で昇順にソートする方法が必要です。どうすればこれを行うのが最善でしょうか?

ご協力ありがとうございました!

4

1 に答える 1

-1

含まれている値を変更したいと思います。つまり、これはおそらくあなたが求めているものです:

foreach (var item in _cleanHelper)
{
    foreach (var jtem in item.Value)
    {
        jtem.Value.Sort((a, b) =>
        {
            int cmp = a[0].CompareTo(b[0]);
            return (cmp == 0) ? a[1].CompareTo(b[1]) : cmp;
        });
    }
}

そうは言っても、私はこのように実装することは決してありません...おそらく、座標の「Point」クラスを作成し、辞書に使用するキーを見ると、おそらく単一の「Direction」として実装します。クラスまたは類似のもの。これにより、コードがはるかに読みやすくなり、ボーナスとして、構造がf.exでトラバースしやすくなります。Linq。

于 2013-02-11T14:14:00.627 に答える