2009-05-06 2 views
1

Я занимаюсь разработкой приложения для выполнения поиска на основе 4 критериев поиска:Как выполнить поиск по 4 основным критериям?

  • Ключевое слово (текстовое поле)
  • Опыт (DropDownList)
  • Местонахождение (текстовое поле)
  • Функциональная область (DropDownList)

Нет обязательного поля, поэтому как его выполнить?

+0

Вы могли бы перефразировать свой вопрос или немного уточнить его? Возможно, вы уже написали какой-то код, не могли бы вы его разобрать? – RuudKok

+0

Где вы собираетесь искать данные? –

+0

Я не понимаю, в чем вопрос. –

ответ

1

Если я undertand вопрос ... если у вас есть доступ к LINQ, то становится просто:

(замените IQueryable<T> с IEnumerable<T>, если вы используете-в-объектов LINQ)

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][email protected]"); 
} 
if(activeOnly) { 
    sql.Append(" AND IsActive = 1"); 
} 
if(minDate != DateTime.MinValue) { 
    sql.Append(" AND [Date]>[email protected]"); 
} 
if(maxDate != DateTime.MinValue) { 
    sql.Append(" AND [Date]<[email protected]"); 
} 
// create connection, create command, add parameters, use ExecuteReader etc 
Смежные вопросы