La aplicación cliente envía una matriz json a mi aplicación .net. Lo estoy recibiendo usando la colección de valores de nombre. Ahora quiero leer su valor y asignarlo a una cláusula IN de una consulta SQL.

HttpContext context = HttpContext.Current;
NameValueCollection nvc = context.Request.Form;

string co_json = nvc["co_json"];
// jsArray : [{"roll_number":"11","mark":"68"},{"roll_number":"22","mark":"70"}]";

// I want to get the two roll numbers from above json and need to pass it to SQL 
SqlDataAdapter da = new SqlDataAdapter("select * from  student_details where roll_number IN ( ???) ", con);

DataTable dt = new DataTable();
da.Fill(dt);
2
user2431727 6 abr. 2017 a las 14:58

2 respuestas

La mejor respuesta

Puede convertir el json en un objeto C # personalizado utilizando Newtonsoft JSON.NET Puedes crear una clase como esta:

public class RollMark 
{
    public string roll_number {get;set;}
    public string mark {get;set;}
}

Ahora puedes hacer esto:

HttpContext context = HttpContext.Current;
NameValueCollection nvc = context.Request.Form;
string co_json = nvc["co_json"];// jsArray : [{"roll_number":"11","mark":"68"},{"roll_number":"22","mark":"70"}]";

//collect all rollMarks in json to c# list
var rollMarks = Newtonsoft.Json.JsonConvert.DeserializeObject<List<RollMark>>(co_json );

Y ahora puede agregar parámetros en su consulta de esta manera:

//format your IN query
string[] paramArray = rollMarks.Select(x, i) => "@settings" + i).ToArray();
string query = string.Format("select * from  student_details where roll_number IN ({0})", string.Join(",", paramArray));
SqlDataAdapter da = new SqlDataAdapter(query, con);

DataTable dt = new DataTable();
for (int i = 0; i < rollMarks.Count(); ++i)
{
    da.SelectCommand.Parameters.AddWithValue("@settings", rollMarks[i].roll_number)
}
da.Fill(dt);
0
jomsk1e 6 abr. 2017 a las 12:28

En primer lugar, divida su matriz json para encontrar cada elemento de la matriz. a continuación, cree una clase que tenga cada propiedad de su artículo. finalmente deserialice cada elemento json a la clase.

0
Hk_developer 6 abr. 2017 a las 12:18