在表中选择list <int> </int>

时间:2011-07-06 17:37:47

标签: c# search

有一个字段年龄和名称

的表格

以下数据

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);

如何通过提供

来搜索数据库

以下是表

中的选定数据
jack 15
sara 14
sufia 19

3 个答案:

答案 0 :(得分:5)

使用IN子句以编程方式构建SQL查询:

string sql = @"
    SELECT *
      FROM [PeopleTable]
     WHERE [Age] IN (" + age.Join(", ") + ")";

结果:

SELECT *
  FROM [PeopleTable]
 WHERE [Age] IN (15, 14, 19)

答案 1 :(得分:1)

如果您使用的是MSSQL,则可以创建一个表类型,其中有一列为Age。

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

答案 2 :(得分:0)

如果您使用LINQ to 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);