当前位置:  开发笔记 > 编程语言 > 正文

在列表中标记除一个重复项之外的所有重复项

如何解决《在列表中标记除一个重复项之外的所有重复项》经验,为你挑选了1个好方法。

我有以下类的对象列表,

class Invoice
{
   public int InvoiceNumber;
   public string CustomerName;
   public bool IsDupe;
}

发票号码可以是重复的,甚至可以是4张发票的案例,所有发票都有相同的号码.

我需要在除发票对象之外的所有对象上设置IsDupe标志.一种方法是使用发票号码列表并将每个号码与标志进行比较的强力方法.我也试过这个问题.有没有更好的语法方法呢?TIA



1> Rob..:

这有效.

var invs = new List { new Invoice { InvoiceNumber = 1 }, 
                               new Invoice { InvoiceNumber = 1 }, 
                               new Invoice { InvoiceNumber = 1 },
                               new Invoice { InvoiceNumber = 2 }, 
                               new Invoice { InvoiceNumber = 3 }, 
                               new Invoice { InvoiceNumber = 3 } 
                             };

invs.ForEach(i => i.IsDupe = true);
invs.GroupBy (i => i.InvoiceNumber)
    .Select(g => g.First())
    .ToList()
    .ForEach(i => i.IsDupe = false);

产生

1 null False 
1 null True 
1 null True 
2 null False 
3 null False 
3 null True 

或者,您可以调用该属性IsNotDupe并利用布尔值默认为false的事实(您可以删除第一个ForEach)

推荐阅读
jerry613
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有