I have this code:
public class Customer
{
Int32 id { get; set; } = 0;
User user1 { get; set; } = null;
User user2 { get; set; } = null;
}
/* ... */
using (MySqlConnection conn = new MySqlConnection(Costanti.connessione))
{
conn.Open();
MySqlCommand m = new MySqlCommand("
SELECT c1.*, u1.*, u2.*
FROM customers as c1
inner join utenti u1 on u1.customer_id = c1.id
inner join utenti u2 on u2.customer_id = c1.id
", conn);
MySqlDataReader x = m.ExecuteReader();
DataTable dataTable = new DataTable();
dataTable.Load(x);
String json_string = Newtonsoft.Json.JsonConvert.SerializeObject(dataTable);
List<Customer> lista = new List<Customer>();
Newtonsoft.Json.JsonConvert.PopulateObject(json_string, lista);
conn.Close();
}
How could I map c1.*
fields of select to a generic Customer customer_1
, and then u1.*
and u2.*
into customer_1
's properties? Newtonsoft.Json.JsonConvert.PopulateObject
doesn't let me do it.
The intermediate json_string
looks like:
[
{
"id":1,
"id_user":8,
"name":"manuel",
"id_user1":2,
"name1":"michael"
},
{
"id":2,
"id_user":3,
"name":"friedrich",
"id_user1":6,
"name1":"antony"
}
]
And the result has to be a list composed by:
Customer(with id=1)
, withUser1(8,"manuel")
andUser2(2,"michael")
;Customer(with id=2)
, withUser1(3,"friedrich")
andUser2(6,"antony")
.