首先,如果我把它发布在错误的地方,我很抱歉,我是新来的,我不确定我是否在正确的位置发布。 好吧,我正在尝试构建一个通用的搜索方法,我将添加搜索参数来挂载SQL查询并在数据库上执行它。所有这些都使用C#。我的目标是对应于我将搜索的字段的参数,作为该方法所在类的属性。例如:
public foo
{
public string CustomerCode { get; set; }
public string CustomerName { get; set; }
public void AddSearchParameter(???, EnumOperator Operator, object Value)
}
每当我想在搜索中指定要添加的参数时,我希望它看起来像这样:
foo xxx = new foo();
xxx.AddSearchParameter(foo.CustomerCode, EnumOperator.Equal, txtCustomerCode.text);
我的问题是如何做到这一点?
答案 0 :(得分:3)
如果您尝试传递成员信息(以便AddSearchParameter
可以检查MemberInfo
并编写合适的SQL),那么您需要使用其中一个字符串文字(即"CustomerCode"
)或表达式树。后者更丰富,但涉及学习Expression<T>
API。但从根本上说:
public void AddSearchParameter(Expression<Func<object>> expression, ...)
...
xxx.AddSearchParameter(() => foo.CustomerCode, ...)
然而,这不是.NET的一个微不足道的领域。
答案 1 :(得分:1)
如果我正在做这样的事情,我可能会在Search()
上使用foo
方法检查各种this
属性中是否存在值,然后构建基于查询的查询在那。
public List<Results> Search()
{
if (!String.IsNullOrEmpty(this.CustomerCode))
{
// add search value to query
}
// etc.
}