我有一个字符串类型的集合,可以包含任意数量的元素。
现在我需要找出所有重复的元素,只找出第一次出现的重复元素并删除其余元素。
例如
public class CollectionCategoryTitle
{
public long CollectionTitleId { get; set; }
public bool CollectionTitleIdSpecified { get; set; }
public string SortOrder { get; set; }
public TitlePerformance performanceField { get; set; }
public string NewOrder { get; set; }
}
List<CollectionCategoryTitle> reorderTitles =
(List<CollectionCategoryTitle>)json_serializer
.Deserialize<List<CollectionCategoryTitle>>(rTitles);
现在我需要以这样一种方式处理这个集合,它删除了重复项,但它必须保留第一次出现。
编辑:
我已经更新了代码,我需要比较“NewOrder”属性
谢谢
最佳答案
针对您的具体情况:
var withoutDuplicates = reorderTitles.GroupBy(z => z.NewOrder).Select(z => z.First()).ToList();
对于更一般的情况,Distinct() 通常更可取。例如:
List<int> a = new List<int>();
a.Add(4);
a.Add(1);
a.Add(2);
a.Add(2);
a.Add(4);
a = a.Distinct().ToList();
将返回 4、1、2。请注意,Distinct 不保证返回数据的顺序(当前实现似乎确实根据原始数据的顺序返回它们 - 但那是 undocumented,因此不应依赖)。
关于c# - 从集合中删除重复项,但第一次出现除外,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8093095/