多个字段搜索

时间:2011-12-31 11:47:45

标签: c# database

我将开发基于C#表单的桌面应用程序,我正在开发一个搜索模块。搜索条件是如果该字段为空,则保留该字段,如果填写了两个或两个以上的字段,则搜索结果将显示为AND所有字段。我无法对此进行查询。请帮我 此致

2 个答案:

答案 0 :(得分:5)

这里的典型方法是:

var query = new StringBuilder();
query.Append("select ... From ... Where 1=1");
if(fooHasValue) {
    query.Append(" and Foo = @foo");
    cmd.Parameters.AddWithValue("foo", foo);
}
if(barHasValue) {
    query.Append(" and Bar = @bar");
    cmd.Parameters.AddWithValue("bar", bar);
}
cmd.CommandText = query.ToString();

或类似的东西。

我使用LINQ;

IQueryable<Whatever> query = ctx.TheTable;
if(fooHasValue)
    query = query.Where(x => x.Foo == foo);
if(barHasValue)
    query = query.Where(x => x.Bar == bar);
foreach(var row in query) {...}

答案 1 :(得分:0)

尝试这样的事情,以便计算非空列(c1 ... c4):

SELECT *
FROM tbl
WHERE
  (CASE WHEN c1 IS NULL THEN 0 ELSE 1 END +
  CASE WHEN c2 IS NULL THEN 0 ELSE 1 END +
  CASE WHEN c3 IS NULL THEN 0 ELSE 1 END + 
  CASE WHEN c4 IS NULL THEN 0 ELSE 1 END) >= 2