using System.Collections;
using System.Collections.Generic;
using System.Runtime.Serialization.Formatters;
using System.ComponentModel.DataAnnotations;
using System.Globalization;
using Newtonsoft.Json.Linq;
using Newtonsoft.Json.Converters;
using Newtonsoft.Json.Serialization;
public Int32 id { get; set; }
public User user1 { get; set; }
public User user2 { get; set; }
public Int32 Id { get; set; }
public string Name { get; set; }
public static class DataReaderExtensions
public static IEnumerable<T> SelectRows<T>(this IDataReader reader, Func<IDataRecord, T> select)
yield return select(reader);
public static void Test()
using (IDataReader x = GetDataTable().CreateDataReader())
id = Convert.ToInt32(r["id"], NumberFormatInfo.InvariantInfo),
id_user = Convert.ToInt32(r["id_user"], NumberFormatInfo.InvariantInfo),
name = r["name"].ToString(),
id_user1 = Convert.ToInt32(r["id_user1"], NumberFormatInfo.InvariantInfo),
name1 = r["name1"].ToString(),
user1 = new User { Id = r.id_user, Name = r.name },
user2 = new User { Id = r.id_user1, Name = r.name1 },
Assert.IsTrue(lista.Count == 2 && lista[0].id == 1 && lista[0].user1.Id == 8 && lista[1].user2.Id == 6 && lista[1].user2.Name == "antony");
Console.WriteLine("Serialized List<{0}>:", typeof(Customer));
Console.WriteLine(JsonConvert.SerializeObject(lista, Formatting.Indented));
static DataTable GetDataTable()
return JsonConvert.DeserializeObject<DataTable>(json);
public static void Main()
Console.WriteLine("Environment version: " + Environment.Version);
Console.WriteLine("Json.NET version: " + typeof(JsonSerializer).Assembly.FullName);
Console.WriteLine("Failed with unhandled exception: ");