2

首先,如果我将它发布在错误的地方,我深表歉意,我是新来的,我不确定我是否发布在正确的地方。好吧,我正在尝试构建一个通用搜索方法,我将在其中添加搜索参数以挂载 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);

我的问题是怎么做?

4

2 回答 2

3

如果您尝试传递成员信息(以便AddSearchParameter可以检查MemberInfo并编写合适的 SQL),那么您需要使用字符串文字(即"CustomerCode")或表达式树。后者更丰富,但涉及学习Expression<T>API。但从根本上说:

public void AddSearchParameter(Expression<Func<object>> expression, ...)
...
xxx.AddSearchParameter(() => foo.CustomerCode, ...)

然而,这并不是 .NET 的一个简单领域。

于 2013-11-06T13:20:55.793 回答
1

如果我正在做这样的事情,我可能会使用该Search()方法foo检查各种this属性中是否存在值,然后基于此构建查询。

public List<Results> Search()
{
    if (!String.IsNullOrEmpty(this.CustomerCode))
    {
        // add search value to query
    }

    // etc.
}
于 2013-11-06T13:20:48.957 回答