dotnet-Snippets.com
Snippets: 76 | Registered User: 92 | Visitors online: 2
Main Menu

Home
Random Snippet
FAQs
Contact Us
Imprint
RSS Feeds

Rss All languages
Rss C#
Rss VB.NET
Rss C++
Rss J#
Rss ASP.NET
Jobs

dotnet Jobs
Google Ads

Sri Lanka .NET 
                Forum Member
Create DataSet from Generic List

Author: Brian Byrdsong
Programming Language: C# Rating:
not yet rated

Views: 1742

Description:

Need a dataset from a generic list of a typeset object?



C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
    using System.Data.DataSet
    using System.Collection.Generic.List
    using System.Reflection
     
     
    public DataSet CreateDataSet<T>(List<T> list)
    {
         //list is nothing or has nothing, return nothing (or add exception handling)
         if (list == null || list.Count == 0) { return null; }
     
         //get the type of the first obj in the list
         var obj = list[0].GetType();
     
         //now grab all properties
         var properties = obj.GetProperties();
         
         //make sure the obj has properties, return nothing (or add exception handling)
         if (properties.Length == 0) { return null; }
         
         //it does so create the dataset and table
         var dataSet = new DataSet();
         var dataTable = new DataTable();
         
         //now build the columns from the properties
         var columns = new DataColumn[properties.Length];
         for (int i = 0; i < properties.Length; i++)
         {
              columns[i] = new DataColumn(properties[i].Name, properties[i].PropertyType);
         }
         
         //add columns to table
         dataTable.Columns.AddRange(columns);
         
         //now add the list values to the table
         foreach (var item in list)
         {
              //create a new row from table
              var dataRow = dataTable.NewRow();
         
              //now we have to iterate thru each property of the item and retrieve it's value for the corresponding row's cell
              var itemProperties = item.GetType().GetProperties();
         
              for (int i = 0; i < itemProperties.Length; i++)
              {
                   dataRow[i] = itemProperties[i].GetValue(item, null);
              }
         
              //now add the populated row to the table
              dataTable.Rows.Add(dataRow);
         }
         
         //add table to dataset
         dataSet.Tables.Add(dataTable);
         
         //return dataset
         return dataSet;
    }
     
    //Usage example:
     
    var listOfCars = new List<Car>(){ new Car{ Make="Nissan", Model="Maxima", CarYear=2011 } };
    var dataSet = CreateDataSet(listOfCars); 

This Snippets could be interesting for you:

Poor Excellent
1 2 3 4 5 6 7 8 9 10
Sign in to vote for this snippet.

Comments:
(Please log in to write an comment.)