GroupBy()
और Count() > 1
का उपयोग करके मैं एक सूची में अपनी कक्षा के डुप्लिकेट उदाहरण ढूंढने की कोशिश कर रहा हूं।जटिल वस्तु पर GroupBy (उदा। सूची <T>)
वर्ग इस तरह दिखता है:
public class SampleObject
{
public string Id;
public IEnumerable<string> Events;
}
और यह कैसे मैं और समूह का दृष्टांत सूची है:
public class Program
{
private static void Main(string[] args)
{
var items = new List<SampleObject>()
{
new SampleObject() { Id = "Id", Events = new List<string>() { "ExampleEvent" } },
new SampleObject() { Id = "Id", Events = new List<string>() { "ExampleEvent" } }
};
var duplicates = items.GroupBy(x => new { Token = x.Id, x.Events })
.Where(g => g.Count() > 1)
.Select(g => g.Key)
.ToList();
}
}
duplicates
कोई आइटम नहीं होता। मैं समूहबद्ध काम कैसे कर सकता हूं?
डिफ़ॉल्ट सूचियों द्वारा अपने आइटम के मूल्यों से तुलना नहीं कर रहे हैं। –
@ सेर्गी बेरेज़ोवस्कीय - जो यहां मुद्दा नहीं है। समस्या 'गेटहाशकोड' और 'बराबर' ओवरराइड की कमी है। – Enigmativity
@ निष्क्रियता 'नया {टोकन = x.Id, x.Events}' के बराबर ओवरराइड और 'नमूना ऑब्जेक्ट' के GetHashCode को ओवरराइड करने के लिए कुछ भी नहीं है। यहां समस्या पूरी तरह से 'x.Events' तुलना –