2012-04-03 14 views
7

मैं एक प्रश्न हैLINQ अलग करके नई क्वेरी

var QP = (from a in QProductAllInfo select new { a.Id, a.Title, a.FullTitle}).Distinct(); 

परिणाम है:

  • 1 इवानोव इवान
  • 1 इवानोव इवान
  • 2 पेत्रोव पेट्र
  • 3 Sidorov इवान
  • 3 सिदोरोव इवान

और मैं परिणाम की जरूरत है:

  • 1 इवानोव इवान
  • 2 पेत्रोव पेट्र
  • 3 Sidorov इवान
+0

क्या आपने अपने डेटा स्रोत में 'विशिष्ट' लागू करने का प्रयास किया है, जैसे कि QProductAllInfo.Distinct() 'से? – madd0

+0

हां। काम नहीं – alexandrovdi

उत्तर

6

मान लीजिए कि विभिन्न आईडी हमेशा अलग मानी जाती हैं, आप इसे आजमा सकते हैं।

मैं शायद इसे दो प्रश्नों में लिखूंगा। इस तरह डीबग करना और अधिक पठनीय करना आसान है। आप MoreLinq का उपयोग कर सकते हैं।

DistinctBy

Download

var temp = from a in QProductAllInfo select new { a.Id, a.Title, a.FullTitle}.ToList(); 

var result = temp.DistinctBy(i => i.Id); 

तुम भी

Var result = temp.GroupBy(x => x.Id).Select(y => y.First()); 
+0

यह मदद की है, लेकिन मैं इस datagridview.datasource = परिणाम की तरह कोड नहीं कर सकता; – alexandrovdi

+1

आप डेटासॉर को Ienumerable असाइन नहीं कर सकते हैं। डेटास्रोत के लिए Ienumerable असाइन करने के तरीके पर Google कृपया। मैं एएसपीनेट – Sandeep

+0

पर अच्छा नहीं हूं आपका आपका काम धन्यवाद !!! – alexandrovdi

0

आप एक IEqualitycomparer को लागू कर सकता है कि .Distinct उपयोग करता है, तो यह निर्धारित करने के आइटम सूची में पहले से मौजूद है। यह एक ही वस्तु के संदर्भ में विशेषताओं पर तुलना कर सकते हैं।

लेकिन मुझे नहीं पता कि यह अज्ञात प्रकारों पर काम करता है या नहीं।

2

उपयोग कर सकते हैं आप QProductAllInfo में डुप्लिकेट हैं, तो यह करके अपने कोड की जगह आपकी समस्या का समाधान करना चाहिए। लागू करने गुमनाम प्रकार पर अलग ऑपरेटर बेकार है

var QP = from a in QProductAllInfo 
     select Tuple.Create(a.Id, a.Title, a.FullTitle); 

गुमनाम प्रकार हमेशा प्रकार है कि donc संदर्भ रहे हैं, क्योंकि:

var QP = from a in QProductAllInfo.Distinct() 
     select new { a.Id, a.Title, a.FullTitle }; 

अगर यह काम नहीं करता है, आप के बजाय गुमनाम प्रकार के tuples इस तरह उपयोग कर सकते हैं IEquatable इंटरफ़ेस को लागू करें।

+0

मुझे 8 आइटमों का चयन करने की आवश्यकता है। और अंत में मुझे अगले करने की ज़रूरत है: datagridview.datasource = QP; – alexandrovdi