c# - 从集合中删除重复项,但第一次出现除外

标签 c# .net 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);

现在我需要以这样一种方式处理这个集合,它删除了重复项,但它必须保留第一次出现。

编辑:

我已经更新了代码,我需要比较“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/

相关文章:

c# - JSON.Net 是否保证始终以相同的方式序列化?

java - AMQP 中的 channel 和链接有什么区别?

c# - 使用语法糖/内置功能

c# - 带有用于服务器端渲染的 Javascript View 引擎的 Asp.Net MVC - 服务器上的构建错误

java - 在java中打印字符串字符下的星号(*)

c# - 图片框 slider 控制透明度

c# - Mysql 重复键更新查询错误

c# - 字符串类型和字符串类型有什么区别? (首字母大写)

java - 使用列表的低延迟

java - ArrayList 排序元素的初始索引