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