Установите DataView (или DataTable.DefaultView) RowFilter для пользовательского типа - PullRequest
5 голосов
/ 26 февраля 2011

Я занимаюсь разработкой приложения для фильтрации просмотра данных.Я использую свойство RowFilter dataview для фильтрации данных.Моя таблица базы данных содержит поля типа данных int & varchar.И я хочу использовать запрос «LIKE» в свойстве RowFilter для фильтрации представления данных, но «LIKE» используется только для строкового типа данных, а не для типа данных int.Поэтому я хочу преобразовать поле типа int в тип данных varchar, но я не хочу изменять структуру таблицы.Я просто хочу, чтобы тип данных был изменен временно только для моего условия фильтрации.

Кто-нибудь может мне помочь в решении этой проблемы?

string colname="ProductID";
string condition="111";
DataView dv = new DataView();
dv.Table = ds.Tables[0] ;
dv.RowFilter ="CAST ("+colname+" AS TEXT) LIKE '"+ condition+"%'"  ;

Ответы [ 3 ]

13 голосов
/ 26 февраля 2011

RowFilter выполняется .NET, а не SQL Server. Он поддерживает ограниченный набор выражений, которые описаны в документации Framework.

http://msdn.microsoft.com/en-us/library/system.data.datacolumn.expression.aspx

Вы должны иметь возможность использовать LIKE так же, как и CONVERT, но в отличие от SQL-сервера ему нужен тип .NET.

dv.RowFilter ="CONVERT("+colname+", System.String) LIKE '"+ condition+"%'"  ;
0 голосов
/ 26 февраля 2011

вы можете использовать

Convert(varchar(20),value)

или

cast(value is varchar)
0 голосов
/ 26 февраля 2011

Вы можете разыграть целое число ...

  SELECT * FROM table WHERE CAST(field AS TEXT) LIKE '%123%'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...