在WinForms中,可以通过一些代码来动态地创建搜索条件,这些搜索条件将作为变量传递给查询语句。本例将演示如何编写一个可重复使用的搜索条件函数。
首先,我们需要创建一个包含所有可能的搜索条件的类,例如:
public class SearchCriteria
{
public string Name { get; set; }
public int Age { get; set; }
public DateTime DateOfBirth { get; set; }
// ...
}
然后,我们创建一个搜索条件函数来生成查询语句。该函数接受SearchCriteria对象和一个布尔值(表示是否使用AND或OR运算符):
public static string GetSearchCriteria(SearchCriteria criteria, bool useAnd)
{
StringBuilder sb = new StringBuilder();
if (!string.IsNullOrEmpty(criteria.Name))
{
sb.Append("Name = '").Append(criteria.Name).Append("'");
if (useAnd)
sb.Append(" AND ");
else
sb.Append(" OR ");
}
if (criteria.Age > 0)
{
sb.Append("Age = ").Append(criteria.Age);
if (useAnd)
sb.Append(" AND ");
else
sb.Append(" OR ");
}
if (criteria.DateOfBirth != DateTime.MinValue)
{
sb.Append("DateOfBirth = '").Append(criteria.DateOfBirth.ToString("yyyy-MM-dd")).Append("'");
if (useAnd)
sb.Append(" AND ");
else
sb.Append(" OR ");
}
// ...
if (useAnd)
sb.Remove(sb.Length - 5, 5);
else
sb.Remove(sb.Length - 4, 4);
return sb.ToString();
}
该函数可以按以下方式使用:
SearchCriteria criteria = new SearchCriteria();
criteria.Name = "John Doe";
criteria.Age = 30;
criteria.DateOfBirth = new DateTime(1990, 1, 1);
string searchCriteria = GetSearchCriteria(criteria, true);
这将生成一个查询语句:
Name = 'John Doe' AND Age = 30 AND DateOfBirth = '1990-01-01'
该函数可以根