我有以下类的对象列表,
class Invoice { public int InvoiceNumber; public string CustomerName; public bool IsDupe; }
发票号码可以是重复的,甚至可以是4张发票的案例,所有发票都有相同的号码.
我需要在除发票对象之外的所有对象上设置IsDupe标志.一种方法是使用发票号码列表并将每个号码与标志进行比较的强力方法.我也试过这个问题.有没有更好的语法方法呢?TIA
这有效.
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
)