c# - 如何在 C# 中对哈希集的坐标进行排序

标签 c# sorting hashset

enter image description here

我正在 HashSet 中保存坐标值。

我想按照上图中的顺序对其进行排序。

下面是一个典型的点结构,使用哈希集。

struct Point
{
    public int x, y;
    public Point(int x, int y)
    {
        this.x = x;
        this.y = y;
    }
}

private HashSet<Point> hashset = new HashSet<Point>();

我找到了一个只对一个值进行排序的来源。

但是,我还没有找到对两个或坐标值进行排序的来源。

给我一​​个如何对坐标进行排序的示例。

最佳答案

您可以使用自定义比较器来实现您想要的目的,您可以在其中定义自己的规则:

var comparer = Comparer<Point>.Create((p1, p2) =>
{
    if (p1.y < p2.y)
    {
       return p1.x > p2.x ? 1 : -1;
    } 
    else
    {
       return p1.x < p2.x ? 1 : -1;
    }
});

hashset.OrderBy(p => p, comparer)

附注不能 100% 确定所有条件都正确,但希望您能明白我的想法,以便您可以按照此示例编写您想要的逻辑。

关于c# - 如何在 C# 中对哈希集的坐标进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56022119/

相关文章:

c# - 使用加法混合绘制图像

c# - 在控制台应用程序中使用图像而不是文本

android - 在 Android 中排序列表查看数据

vb.net - 对 .NET 中的结构数组进行排序

java - 哈希集 io java

c# - 有没有办法调用需要 IEnumerable<T> 与单个值的 C# 方法? ...与基准测试

c# - 如何用linq减去两个数据表

Javascript 排序函数。按第一个排序,然后按第二个排序

c# - 对于一个只能包含唯一项目但在 99% 的时间里包含 0 或 1 个项目的列表,开销是否使 List 比 HashSet 更好?

java - 将文件读入列表?