除了第一次出现之外,从集合中删除重复项

Ami*_*mit 2 .net c# collections

我有一个类型字符串集合,可以包含任意数量的元素.

现在我需要找出所有那些重复的元素,只找出重复元素的第一次出现并删除其余元素.

对于前者

 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);
Run Code Online (Sandbox Code Playgroud)

现在我需要以这样的方式处理这个集合,它会删除重复但它必须保持第一次出现.

编辑:

我已经更新了代码,我需要在"NewOrder"属性上进行比较

谢谢

mjw*_*lls 6

对于您的具体情况:

var withoutDuplicates = reorderTitles.GroupBy(z => z.NewOrder).Select(z => z.First()).ToList();
Run Code Online (Sandbox Code Playgroud)

对于更一般的情况,通常优选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();
Run Code Online (Sandbox Code Playgroud)

将返回4,1,2.请注意,Distinct不保证返回数据的顺序(当前实现似乎确实根据原始数据的顺序返回它们 - 但是没有记录,因此不应该依赖在).