आपको त्रुटि मिलती है क्योंकि Select
पर पैरामीटर फ़िल्टर एक्स्प्रेशन है और आपने सभी कॉलम पास कर दिए हैं। एसक्यूएल में WHERE
खंड के रूप में filterExpression को समझें। आप सभी कॉलम चाहते हैं लेकिन आप केवल एक से फ़िल्टर करना चाहते हैं। आप सभी स्तंभों को वैसे भी प्राप्त करते हैं क्योंकि वे DataTable
/DataView
का हिस्सा हैं, इसलिए आपको उन्हें स्पष्ट रूप से सूचीबद्ध करने की आवश्यकता नहीं है।
आप या तो इस्तेमाल कर सकते हैं DataTable.Select
, DatView.RowFilter
तरीकों या LINQ-to-DataSet
:
LINQ-टू-डेटासेट (जो मैं पसंद करते हैं):
var filtered = tb.AsEnumerable()
.Where(r => r.Field<String>("CREATOR").Contains(searchstring));
ADO.NET (DataTable.Select
):
DataRow[] filteredRows = tb.Select("CREATOR LIKE '%" + searchstring + "%'");
एडीओ.NET (DataView.RowFilter
):
tb.DefaultView.RowFilter = "CREATOR LIKE '%" + searchstring + "%'";
आप के बजाय किसी भी स्तंभ में इस string
के लिए खोज करना चाहते हैं:
DataRow[] filteredRows = tb.Select("FIRSTNAME LIKE '%" + searchstring + "%' OR LASTNAME LIKE '%" + searchstring + "%' OR NAME LIKE '%" + searchstring + "%' OR COMPANY LIKE '%" + searchstring + "%' OR CREATOR LIKE '%" + searchstring + "%'");
Linq के साथ एक ही:
var filtered = tb.AsEnumerable()
.Where(r => r.Field<String>("FIRSTNAME").Contains(searchstring)
|| r.Field<String>("LASTNAME").Contains(searchstring))
|| r.Field<String>("NAME").Contains(searchstring)
|| r.Field<String>("COMPANY").Contains(searchstring)
|| r.Field<String>("CREATOR").Contains(searchstring));
स्रोत
2013-01-24 09:03:32
को यह बराबर है, लेकिन मैं सभी स्तंभों :( – Tarasov
@Tarasov में खोज करना चाहते हैं: आप सभी स्तंभों चाहते हैं, लेकिन आप एक फ़िल्टर करना चाहते हैं, तो आप के बाद से वे कर रहे हैं वैसे भी सभी स्तंभों मिल 'डेटाटेबल '/' डेटा व्यू 'के सभी भाग। –
मैं इस खोजस्ट्रिंग में प्रत्येक कॉलम खोजना चाहता हूं। मैंने सोचा कि मैं कर सकता हूं :( – Tarasov