C# 在c中使用LINQ从列表中删除重复对象

C# 在c中使用LINQ从列表中删除重复对象,c#,linq,list,C#,Linq,List,这里有一个列对象列表。每个列对象都有几个属性,这些属性可能是唯一的,也可能不是唯一的。这是我到目前为止编写的一个示例代码。如何从列列表中删除重复项,以便在最终列表中只包含c1和c2 Program.cs Column.cs 更新: 我想从列列表中删除重复项。如您所见,c2和c3具有相同的属性。我想删除c3 您的问题我如何才能分组。。。看起来很奇怪。似乎您想知道我如何选择。。。。接下来,我想问您希望如何分组/选择以仅获取c1和c2。没有c1和c2共有的特性,也没有c3共有的特性 如果您想获得c2和

这里有一个列对象列表。每个列对象都有几个属性,这些属性可能是唯一的,也可能不是唯一的。这是我到目前为止编写的一个示例代码。如何从列列表中删除重复项,以便在最终列表中只包含c1和c2

Program.cs

Column.cs

更新:


我想从列列表中删除重复项。如您所见,c2和c3具有相同的属性。我想删除c3

您的问题我如何才能分组。。。看起来很奇怪。似乎您想知道我如何选择。。。。接下来,我想问您希望如何分组/选择以仅获取c1和c2。没有c1和c2共有的特性,也没有c3共有的特性

如果您想获得c2和c3,请尝试:

columns
   .Where(c => c.EndElevation == 630)
var distinctColumns = columns
   .Distinct(new ColumnComparer()); 
对最新问题的答复

获取不同值的标准方法很久以前就在

您需要做的是为Column类添加一个comparator,然后尝试:

columns
   .Where(c => c.EndElevation == 630)
var distinctColumns = columns
   .Distinct(new ColumnComparer()); 

您应该根据要对这些对象进行分组的内容进行说明。实际上,通过对项目进行分组,您不会减少元素的数量。事实并非如此。您应该使用where来筛选某些项目。@TolgaEvcimen我更新了问题。@CameronMacFarland问题是我的Column类有另一个列表作为属性,这让我感到困惑。我想从columns列表中删除重复项。如您所见,c2和c3具有相同的属性。我想删除c3。我是否也应该覆盖Column类的GetHashCode`和Equals?这是另一种方法。通过使用特定的比较器,您可以避免头痛。谢谢Richard,请看我的另一个问题,我已经用完整的代码更好地解释了自己。不幸的是,我的问题被忽略了,并被标记为重复,没有仔细观察。
var distinctColumns = columns
   .Distinct(new ColumnComparer());