有與現場年齡和名字表選擇表,其中列表<int>
以下數據
jack 15
sara 14
mishel 13
sufia 19
green 22
blue 56
我們有以下成員的演示
list<int> age = new list<int>();
age.add(15);
age .add(14);
age .add(19);
我如何通過提供搜索數據庫
以下是選定的數據M表中
jack 15
sara 14
sufia 19
有與現場年齡和名字表選擇表,其中列表<int>
以下數據
jack 15
sara 14
mishel 13
sufia 19
green 22
blue 56
我們有以下成員的演示
list<int> age = new list<int>();
age.add(15);
age .add(14);
age .add(19);
我如何通過提供搜索數據庫
以下是選定的數據M表中
jack 15
sara 14
sufia 19
構建以編程方式使用IN
子句的SQL查詢:
string sql = @"
SELECT *
FROM [PeopleTable]
WHERE [Age] IN (" + age.Join(", ") + ")";
結果:
SELECT *
FROM [PeopleTable]
WHERE [Age] IN (15, 14, 19)
好的答案......但是,我正在使用SP – jackStonre
存儲過程 – jackStonre
@jackStonre:您如何使用存儲過程?你是否通過了一個年齡列表?一張年齡表?逗號分隔的字符串? – mellamokb
如果使用LINQ到SQL,那麼你應該創建此查詢:
var query = from record in table
where ages.Contains(record.age)
select record;
query.ToList();
如果你想使用SP,那麼你必須動態地創建where子句:
string whereClause = string.Empty;
foreach (int age in ages)
{
whereClause += age + ", ";
}
whereClause = whereClause.SubString(query, query.Length - 2) // Removing the last comma;
string query = string.Format ("select * from tableName where age in ({0})", whereClause);
如果OP使用LINQ的話,很好的答案...... – mellamokb
好的答案......但是,我使用SP – jackStonre
如果您正在使用MSSQL你可以創建一個有一列年齡的表型。
CREATE TYPE my_table_type AS TABLE(Age int NOT NULL)
go
CREATE PROCEDURE usp_FetchUser
@age my_table_type READONLY
AS
select user_name from my_table where user_age in(select * from @age)
go
什麼'我如何通過提供'來搜索數據庫? –
這個問題太含糊。這是什麼類型的數據庫?你有沒有數據庫訪問策略?請參閱這些頁面上的[faq]和[ask]以及相關鏈接。 –