0

I currently have a working query for the first element in the array of ID's as seen below. What I need to do is add a for loop so I rerun the query for every element in the array and add each new row to the datatable but I am not sure how I do this? Unless there is a way I can include all ID's of my array in the where clause so I retrieve all rows through first run.

PID[] is a string array and could have anywhere from 1 to 5 elements that are random ID's.

Any help would be appreciated!

        for loop here?

        string firstQuery = "select * from Property p " +
                            "where p.id in (@pID)";

        connString.Open();

        SqlCommand selectAll = new SqlCommand(firstQuery, connString);
        selectAll.Parameters.AddWithValue("@pID", PID[0]);
        SqlDataAdapter adapter = new SqlDataAdapter();
        adapter.SelectCommand = selectAll;
        DataSet ds = new DataSet();
        adapter.Fill(ds);
        connString.Close();
        DataTable table = ds.Tables[0];
4

1 回答 1

4

是的,您可以在一个参数中包含所有 id 并获得与它们匹配的结果:

var parameters = new string[PID.Length];
var selectAll = new SqlCommand();

for (int i = 0; i < PID.Length; i++)
{
    parameters[i] = string.Format("@Age{0}", i);
    selectAll .Parameters.AddWithValue(parameters[i], PID[i]);
}

selectAll.CommandText = string.Format("SELECT * from Property p WHERE p.id IN ({0})", string.Join(", ", parameters));
selectAll.Connection = connString;

connString.Open();

SqlDataAdapter adapter = new SqlDataAdapter();
adapter.SelectCommand = selectAll;
DataSet ds = new DataSet();
adapter.Fill(ds);

connString.Close();
DataTable table = ds.Tables[0];
于 2013-05-24T19:10:45.660 回答