Hata alıyorsunuz çünkü Select
parametresi filterExpression ve tüm sütunları geçtiniz. FilterExpression öğesini sql içinde WHERE
yan tümcesi olarak anlayın. Tüm sütunları istiyorsunuz, ancak sadece bir tanesine göre filtrelemek istiyorsunuz. Tüm sütunları, hepsi DataTable
/DataView
'un bir parçası olduğundan, bunları açıkça listelemeniz gerekmediğinden, elde edersiniz.
Şunları kullanabilirsiniz ya DataTable.Select
, DatView.RowFilter
yöntemleri veya LINQ-to-DataSet
:
LINQ-To-DataSet (i tercih):
var filtered = tb.AsEnumerable()
.Where(r => r.Field<String>("CREATOR").Contains(searchstring));
ADO.NET (DataTable.Select
):
DataRow[] filteredRows = tb.Select("CREATOR LIKE '%" + searchstring + "%'");
ADO.NET (
DataView.RowFilter
):
DataRow[] filteredRows = tb.Select("FIRSTNAME LIKE '%" + searchstring + "%' OR LASTNAME LIKE '%" + searchstring + "%' OR NAME LIKE '%" + searchstring + "%' OR COMPANY LIKE '%" + searchstring + "%' OR CREATOR LIKE '%" + searchstring + "%'");
Linq ile aynı:
tb.DefaultView.RowFilter = "CREATOR LIKE '%" + searchstring + "%'";
yerine herhangi sütununda string
aramak istiyorsanız 10
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));
bu eşdeğer ama tüm sütunları :( – Tarasov
@Tarasov arama yapmak istiyorum: olduklarını beri zaten tüm sütunları olsun, tüm sütunları istediğiniz, ancak tek filtre uygulamak istediğiniz 'DataTable'/'DataView' bölümünün tamamı. –
Bu sütun için her sütunda arama yapmak istiyorum. – Tarasov