2
我將開發基於C#表單的桌面應用程序,其中我正在開發一個搜索模塊。搜索標準是如果該字段爲空,則保留該字段,如果填充了兩個或兩個以上的字段,則搜索結果將通過AND顯示所有字段。我無法對此進行查詢。請幫我 問候多個字段的搜索
我將開發基於C#表單的桌面應用程序,其中我正在開發一個搜索模塊。搜索標準是如果該字段爲空,則保留該字段,如果填充了兩個或兩個以上的字段,則搜索結果將通過AND顯示所有字段。我無法對此進行查詢。請幫我 問候多個字段的搜索
這裏一個典型的做法是:
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) {...}
嘗試這樣的事情,才能算的非空列(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
我使用SQL Server和查詢ID = 「」 給出錯誤所以一個解決方案是我必須編寫多個查詢,並在if n else的基礎上決定執行哪個查詢。 – Snake 2011-12-31 11:52:57