我正在开发一个应用程序,根据4个搜索条件执行搜索:
没有必填字段,那么如何执行呢?
答案 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