Теперь проблема в том, что в моем приложении, где у меня есть функция поиска, когда я ищу число, например 24, он должен выполнить поиск по всем столбцам в каждой из моих строк COne, CTwo, DateColumn1 и вернуть все строки, в столбце которых есть число 24, включая DateColumn1, который имеет тип DateTime, а не строку. Это означает, что мне нужно каким-то образом выполнить частичное сопоставление дат, но я не знаю, как это сделать. Я пробовал несколько запросов фильтрации, но это тоже не работает.
Например, если поисковый запрос снова представляет собой число типа 24, а в моем dataGridView1 У меня есть три строки со следующими данными
Код: Выделить всё
COne CTwo DateColumn1
r1: "Hi 5" | "Hi 30" | 3/20/2024
r2: "Hi 24" | "Hi 1" | 3/2/2025
r3: "Hi 5" | "Hi 24" | 3/20/2026
Код: Выделить всё
DataSet ds = new DataSet();
ds.ReadXml(file);
DataTable dt = ds.Tables[0].Clone();
dt.Columns["DateColumn1"]!.DataType = typeof(DateTime);
foreach (DataRow dr in drs)
{
string dateOne = dr["DateColumn1"].ToString()!;
string parsedDate = DateTime.Parse(dateOne, new CultureInfo("en-US")).ToString("M/dd/yyyy");
dr["DateColumn1"] = parsedDate;
dt.ImportRow(dr);
}
...
dataGridBindingSource.DataSource = dt;
// Search Function
private void HandleSearch()
{
string[] columns = [
"COne",
"CTwo",
"DateColumn1"
];
string searchValue = this.searchTextBox.Text;
string filter = "";
for (int x = 0; x < columns.Length; x++)
{
filter += $"({columns[x]} LIKE '%{searchValue}%' OR Convert ({columns[x]}, 'System.String') LIKE '%{searchValue}%')";
if (x != columns.Length - 1)
{
filter += " OR ";
}
}
this.dataGridBindingSource.Filter = filter;
}
ТАК-пост
Подробнее здесь: https://stackoverflow.com/questions/782 ... earch-term