C# 如何使用LINQ查找列表中仅重复一次的项

C# 如何使用LINQ查找列表中仅重复一次的项,c#,linq,list,C#,Linq,List,假设我们有一个列表点,如下所示,如何获得列表中只重复一次的点对象:p(30,10)和p(30,0) var Points=新列表 { 新点{X=0,Y=0}, 新点{X=10,Y=20}, 新点{X=30,Y=10}, 新点{X=30,Y=0}, 新点{X=0,Y=0}, 新点{X=10,Y=20} }; 公共课点 { 公共双X; 公共双Y; }; var Points = new List<Point> { new Point { X = 0, Y = 0 },

假设我们有一个
列表点
,如下所示,如何获得列表中只重复一次的
对象:p(30,10)和p(30,0)

var Points=新列表
{
新点{X=0,Y=0},
新点{X=10,Y=20},
新点{X=30,Y=10},
新点{X=30,Y=0},
新点{X=0,Y=0},
新点{X=10,Y=20}
};
公共课点
{
公共双X;
公共双Y;
};
var Points = new List<Point>
{
    new Point { X = 0, Y = 0 },
    new Point { X = 10, Y = 20 },
    new Point { X = 30, Y = 10 },
    new Point { X = 30, Y = 0 },
    new Point { X = 0, Y = 0 },
    new Point { X = 10, Y = 20 }
};

public class Point
{
    public double X;
    public double Y;
};
var query = Points
    .GroupBy(p => new { p.X, p.Y }) // Group points based on (X,Y).
    .Where(g => g.Count() == 1)     // Take groups with exactly one point.
    .Select(g => g.Single());       // Select the point in each group.