簡體   English   中英

如何根據4個基本條件進行搜索?

[英]How to perform a search on 4 basic criteria?

我正在開發一個基於4個搜索條件執行搜索的應用程序:

  • 關鍵字(文本框)
  • 經驗(下拉列表)
  • 位置(文本框)
  • 功能區(下拉列表)

沒有必填字段,如何執行呢?

如果我理解這個問題...如果您可以使用LINQ,那么事情就變得簡單了:

(如果使用的是LINQ-to-Objects,則將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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM