Если у вас есть куча различных возможных полей для фильтрации, вы не уйдете от кодирования их всех, так или иначе.
Вы можете создать класс для обработки построения строк.Я украл эту идею с работы.=)
В псевдокоде это в основном выглядело бы так:
Class WhereObj
{
//whatever container you want to use to hold the params
//you could also create a params class and have a list of param objects
//it'd basically be a constructor and two properties
private Params(,)
Public void AddParam(fieldname, value)
//adds param to Params
Public string ToSQLString()
//loops params and builds string (use stringbuilder!)
//ex: "where FirstName= 'Neo' and MatrixSequelsSucked = 'true'"
}
Это должен быть действительно простой класс для кодирования - вероятно, менее 50 строк.Вы должны определенно создать свой собственный объект для обработки этого, особенно , если вам нужно сделать это в нескольких местах.Вы могли бы просто написать функцию, если она только в одном месте, но я думаю, что будет немного чище разделить ее на объект.