Я передаю строку в службу WCF, как это
http://localhost:49854/Service1.svc/rest/getData/station_number=("31098","31508","31273")
Мой IService:
[OperationContract]
[WebInvoke(Method = "*" ,ResponseFormat = WebMessageFormat.Json,RequestFormat = WebMessageFormat.Json, UriTemplate = "getData/station_number=({number})")]
IEnumerable<Data> getData(string number);
Затем эта строка будет разрезана на меньшую часть на ,
, затем добавлена в список, после чего я буду зацикливаться, хотя этот список затем получит данные, которые соответствуют элементу списка, например:
public class Service1 : IService1
{
public IEnumerable<Data> getData(string number)
{
string cs = ConfigurationManager.ConnectionStrings["Bokeh_data"].ConnectionString;
List<string> new_list = new List<string>();
new_list = number.Split(',').ToList();
List<Data> data_cont = new List<Data>();
Data dt = new Data();
for (var i = 0; i< new_list.Count; i++)
{
using (SqlConnection conn = new SqlConnection(cs))
{
SqlCommand cmd = new SqlCommand("GetData_byvalue", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@number", SqlDbType.VarChar, 50).Value = new_list[i];
conn.Open();
SqlDataReader reader = cmd.ExecuteReader();
while(reader.Read())
{
dt.bike_number = reader["Bike_number"].ToString();
dt.start_station = reader["Start_station"].ToString();
dt.start_station_num = reader["Start_station_numb"].ToString();
data_cont.Add(dt);
}
}
}
return data_cont;
}
Моя процедура:
CREATE PROCEDURE GetData_byvalue(@number nvarchar(50))
AS
BEGIN
SELECT * FROM data WHERE Start_station_num = @number
END
Но я могу получить только один последний Start_station_num
за один раз, например "31273"
(у меня есть все три Start_station_num
в моей таблице), возможно, потому что мой цикл или моя строка неверны?
Вот что я получил от WCF:
неожиданный результат