对字典进行排序根据它的键

本文关键字:int 字典 排序 Point | 更新日期: 2023-09-27 18:06:00

我有一个Dictionary<Point, int> MyDic, Point类定义如下:

public class Point
{
    public double X { get; set; }
    public double Y { get; set; }
}

如何使用LINQ根据KeyMyDic进行排序?我想先按X订货,再按Y订货。

例如,如果我的字典如下所示:

Key (Point (X,Y))          Value (int)
--------------------------------------
(8,9)                      6
(5,4)                      3
(1,4)                      2
(11,14)                    1

排序后是这样的:

Key (Point (X,Y))          Value (int)
--------------------------------------
(1,4)                      2
(5,4)                      3
(8,9)                      6
(11,14)                    1

对字典进行排序<Point, int>根据它的键

OrderByThenBy应该可以满足您的要求:

MyDic.OrderBy(x => x.Key.X)
    .ThenBy(x => x.Key.Y)
    .ToDictionary(x => x.Key, x => x.Value)