2009-03-11 16 views
30

में कोई मान पाएं क्या पंक्ति-दर-पंक्ति संचालन किए बिना डेटाटेबल में डेटाटेबल में कोई मूल्य खोजने का कोई तरीका है?डेटाटेबल

मूल्य डेटा का एक हिस्सा हो सकता है (पंक्ति का एक सबस्ट्रिंग [कॉलमनाम] .value, अल्पविराम से अलग) डेटाटेबल में एक सेल और मूल्य पंक्ति में किसी भी कॉलम में मौजूद हो सकता है।

उत्तर

49

डेटाटेबल या डेटासेट ऑब्जेक्ट में एक चयन विधि होगी जो पैरामीटर के रूप में पारित क्वेरी के आधार पर परिणामों की डेटारो सरणी वापस कर देगी।

आपकी आवश्यकता को देखते हुए इस फ़ाइल को बनाने के लिए आपके filterexpression को कुछ सामान्य होना होगा।

myDataTable.Select("columnName1 like '%" + value + "%'"); 
+1

कैसे हम LINQ के साथ ऊपर वाक्य रचना कर सकते हैं। – Karan

14

हो सकता है कि आप इस तरह से संभव स्तंभों के आधार पर पंक्तियों को फ़िल्टर कर सकते हैं:

DataRow[] filteredRows = 
    datatable.Select(string.Format("{0} LIKE '%{1}%'", columnName, value)); 
+2

यदि आप सही मान चाहते हैं: DataRow [] filteredRow = डेटाटेबल। चयन करें ("ColumnName = 'value'"); – Nicola

8

AFAIK, सभी स्तंभों खोज के लिए में बनाया गया कोई बात नहीं है। आप केवल प्राथमिक कुंजी के विरुद्ध Find का उपयोग कर सकते हैं। Select निर्दिष्ट कॉलम की आवश्यकता है। आप शायद LINQ का उपयोग कर सकते हैं, लेकिन आखिरकार यह वही लूपिंग करता है। शायद इसे अपने आप अनलॉक करें? यह कम से कम पठनीय होगा।

-1

इस सवाल 2009 में पूछा लेकिन मैं अपने कोड साझा करना चाहते हैं:

Public Function RowSearch(ByVal dttable As DataTable, ByVal searchcolumns As String()) As DataTable 

    Dim x As Integer 
    Dim y As Integer 

    Dim bln As Boolean 

    Dim dttable2 As New DataTable 
    For x = 0 To dttable.Columns.Count - 1 
     dttable2.Columns.Add(dttable.Columns(x).ColumnName) 
    Next 

    For x = 0 To dttable.Rows.Count - 1 
     For y = 0 To searchcolumns.Length - 1 
      If String.IsNullOrEmpty(searchcolumns(y)) = False Then 
       If searchcolumns(y) = CStr(dttable.Rows(x)(y + 1) & "") & "" Then 
        bln = True 
       Else 
        bln = False 
        Exit For 
       End If 
      End If 
     Next 
     If bln = True Then 
      dttable2.Rows.Add(dttable.Rows(x).ItemArray) 
     End If 
    Next 

    Return dttable2 


End Function 
+0

यह एक सी # प्रश्न है, वीबी नहीं। – AzNjoE

+0

और पंक्तियों और स्तंभों पर लूप, कुछ ऐसा जो ओपी से बचना चाहता है – bluish