如何搜索4个基本标准?

时间:2009-05-06 06:27:40

标签: c#

我正在开发一个应用程序,根据4个搜索条件执行搜索:

  • 关键字(文本框)
  • 经验(下拉列表)
  • 位置(文本框)
  • 功能区(下拉列表)

没有必填字段,那么如何执行呢?

1 个答案:

答案 0 :(得分:1)

如果我提出问题......如果您可以访问LINQ,那么它就变得简单了:

(如果您使用的是LINQ到对象,请将IQueryable<T>替换为IEnumerable<T>

IQueryable<YourType> query = ctx.SomeObjects;

if(!string.IsNullOrEmpty(name)) {
    query = query.Where(x => x.Name == name);
}
if(activeOnly) {
    query = query.Where(x => x.IsActive);
}
if(minDate != DateTime.MinValue) {
    query = query.Where(x => x.Date >= minDate);
}
if(maxDate != DateTime.MinValue) {
    query = query.Where(x => x.Date <= maxDate);
}
var results = query.ToList();

如果您正在使用常规ADO.NET与数据进行通信,则可以使用动态查询组合,也可以调用在内部执行相同操作的SP(或类似) - 例如(第一个):

StringBuilder sql = new StringBuilder(
     "SELECT * FROM [SOME_TABLE] WHERE 1=1");
if(!string.IsNullOrEmpty(name)) {
    sql.Append(" AND [Name]=@name");
}
if(activeOnly) {
    sql.Append(" AND IsActive = 1");
}
if(minDate != DateTime.MinValue) {
    sql.Append(" AND [Date]>=@minDate");
}
if(maxDate != DateTime.MinValue) {
    sql.Append(" AND [Date]<=@maxDate");
}
// create connection, create command, add parameters, use ExecuteReader etc