2010-07-13 6 views
5

मैं कई कॉलमों पर अलग होने की कोशिश कर रहा हूं और डेटाटेबल से डेटार प्राप्त कर रहा हूं। लेकिन त्रुटि हो रही है।लिंकक (बहुमूल्य कॉलम के साथ अलग) का उपयोग करके डेटाटेबल से अलग पंक्तियां प्राप्त करें

Dim query As IEnumerable(Of DataRow) = 
      (From row As DataRow In SourceTable.AsEnumerable() _ 
      Select row.Field(Of String)("ColumnName1"), 
        row.Field(Of String)("ColumnName2")).Distinct() 
त्रुटि नीचे

:

Unable to cast object of type '<DistinctIterator>d__7a`1[System.String]' 
to type 'System.Collections.Generic.IEnumerable`1[System.Data.DataRow]'. 

मैं SourceTable से दिए गए कॉलम के आधार पर अलग-अलग पंक्ति के साथ एक और datatable चाहते हैं।

+0

आप datatable में अलग सहायता इस्तेमाल कर सकते हैं की कोशिश करो यह एक - http://social.msdn.microsoft.com/forums/en-US/adodotnetdataset/thread/ed9c6a6a-a93e-4bf5-a892-d8471b84aa3b/ToTable() में एक अधिभार है जो आपको यह निर्दिष्ट करने देता है कि नई तालिका में आप कौन से कॉलम चाहते हैं, यह निर्दिष्ट करने के लिए केवल विशिष्ट मानों को वापस करना है या नहीं। –

उत्तर

4

में तो

Dim query = From q In (From p In dt.AsEnumerable() Select New With {.col1= p("ColumnName1"), .col2 = p("ColumnName2")}) Select q.col1, q.col2 Distinct 
+0

उपयोगकर्ता 'क्वेरी' ऑब्जेक्ट्स को कैसे सुरक्षित नहीं कर रहा है। मेरा मतलब है कि इसे फिर से कैसे करें? – James123

0

इस (एक मेरी ओर से एक अनुमान के बिट) का प्रयास करें:

Dim query As IEnumerable(Of DataRow) = 
     (From row As DataRow In SourceTable.AsEnumerable().Distinct() _ 
     Select row.Field(Of String)("ColumnName1"), 
       row.Field(Of String)("ColumnName2")) 
+0

आपकी क्वेरी को निष्पादित करते समय एक ही त्रुटि मिली – James123

+0

आह shit मुझे त्रुटि संदेश पर अधिक ध्यान देना चाहिए था। मुझे अब मिल गया है आपकी समस्या आपका एसक्यूएल सिंटैक्स नहीं है - यह डेटाटाइप है जिसे आप उम्मीद करते हैं क्योंकि आप इसे डेटारो के एक संख्यात्मक संग्रह के रूप में चिह्नित कर रहे हैं जब आप टुपल्स प्रोजेक्ट कर रहे हैं जिसमें स्ट्रिंग्स की एक जोड़ी है। – Aaronontheweb

+0

सिंटैक्स बदलें ताकि आप कॉलम के रूप में जोड़े गए प्रत्येक स्ट्रिंग के साथ एक नया डेटारो पेश कर रहे हों - या तो वह या IENumerable (DataRow) को स्ट्रिप करें और परिणामस्वरूप केवल इम्प्लेक्ट प्रकार को स्वीकार करें। – Aaronontheweb

0

इस

var distinctRows = (from DataRow dRow in dTable.Rows 
        select new col1=dRow["dataColumn1"],col2=dRow["dataColumn2"]}).Distinct(); 

इस सी # में है की कोशिश करो। यह कन्वर्ट vb.net

+0

आप अपने LINQ प्रोजेक्शन के सामने एक घुंघराले ब्रेस खो रहे हैं, लेकिन मुझे आपका अर्थ मिल गया है। – Aaronontheweb

+0

यह एक अलग कॉलम – James123