c# .net Adsense ADO.NET Linq Viruses/security asp.net MVC JQuery Angular-js Node-js SEO Java C++ SQL API Networking vb.net .Net Css JavaScript Generics c#.Net entity framework HTML Website host Website Construction Guide HTTP tutorial W3C tutorial Web Services JSON Psychology Ionic framework Angular ReactJS Python Computer Android
Generics c#.Net

How to convert List To DataTable using generics to pass as tvp(Table-Valued Parameters) as parameter in stored procedures

| | Generics

Very often we need to convert List to DataTable, so that we can pass DataTable to Stored Procedure as Paramter in the form of tvp. In this example i will show you how to convert List to datatable.

  public static DataTable ConvertToDataTable<TSource>(IEnumerable<TSource> source)
        {
            if (source == null)
                return null;
            var props = typeof(TSource).GetProperties();
            var dt = new DataTable();
            //dt.Columns.AddRange(pi.Name,Nullable.GetUnderlyingType(
            //pi.PropertyType) ??pi.PropertyType);
            dt.Columns.AddRange(
             props.Select(p => new DataColumn(p.Name, Nullable.GetUnderlyingType(p.PropertyType)?? p.PropertyType)).ToArray()
            );
           source.ToList().ForEach(
              i=> dt.Rows.Add(props.Select(p => p.GetValue(i, null)).ToArray())
            );
            return dt;
        }