2013-04-01 9 views
6

पाने के लिए LINQ का उपयोग कर तो मैं इस कोडडुप्लीकेट ढूंढना लेकिन पूरे रिकॉर्ड

var duplicates = mg.GroupBy(i => new { i.addr1, i.addr2 }) 
        .Where(g => g.Count() > 1) 
        .Select(g=>g.Key); 
    GridView1.DataSource = duplicates; 
    GridView1.DataBind(); 

उपयोग कर रहा हूँ खोजने के लिए और addr1 और addr2 के आधार पर किसी तालिका में डुप्लिकेट सूची। इस कोड के साथ ही समस्या यह है कि यह केवल मुझे addr1 और addr2 कि डुप्लिकेट हैं जब मैं वास्तव में रिकॉर्ड के सभी क्षेत्रों प्रदर्शित करना चाहते हैं की जोड़ी देता है। (सभी आईडी, addr1, addr2, शहर, राज्य जैसे क्षेत्रों ...)

कोई भी विचार?

उत्तर

13

की पहली पंक्ति रिटर्न सभी मूल्यों को प्राप्त करने के लिए आपको IGrouping

var duplicates = mg.GroupBy(i => new { i.addr1, i.addr2 }) 
        .Where(g => g.Count() > 1) 
        .Select(g => new {g.Key, Values = g.ToList()}); 
+0

कि एक बहुत अच्छी solutio है n ... यह फ्लॉप मेरे मन मान = g.Tolist (करने के लिए) – Nathan

+0

awsome solution.thank पार आप –

8

आप First() बजाय Key उपयोग करना चाहिए:

var duplicates = mg.GroupBy(i => new { i.addr1, i.addr2 }) 
       .Where(g => g.Count() > 1) 
       .Select(g => g.First()); 

यह प्रत्येक डुप्लिकेट समूहों

+0

पर ToList() उपयोग कर सकते हैं मैं साथ ही अपने समाधान पसंद है और यह सीधे आगे है ... – Nathan

संबंधित मुद्दे