Tech
Forums
Jobs
Books
Events
Interviews
Live
More
Learn
Training
Career
Members
Videos
News
Blogs
Challenges
Certification
Contribute
Article
Blog
Video
Ebook
Interview Question
Collapse
Feed
Dashboard
Wallet
Learn
Achievements
Network
Rewards
SharpGPT
Premium
Contribute
Article
Blog
Video
Ebook
Interview Question
Register
Login
Converting Collection to Dataset
WhatsApp
Arunava Bhattacharjee
10y
85.2
k
0
0
25
Blog
Introduction
I saw there is always a need to convert a list to a dataset and then bind it to a datagrid. To make it reusable I used the C# extension method feature.
Solution
We first check to make sure a list is provided or we throw an ArgumentNullException (in the overloaded constructor we also check for the name parameter). Here’s how the two constructors look:
public
static
DataSet ConvertToDataSet<T>(
this
IEnumerable<T> source,
string
name)
{
if
(source ==
null
)
throw
new
ArgumentNullException(
"source "
);
if
(
string
.IsNullOrEmpty(name))
throw
new
ArgumentNullException(
"name"
);
var converted =
new
DataSet(name);
converted.Tables.Add(NewTable(name, source));
return
converted;
}
Where Name= Name of the DataTable to be added to the DataSet.
Let’s have a look of the NewTable method:
private
static
DataTable NewTable<T>(
string
name, IEnumerable<T> list)
{
PropertyInfo[] propInfo =
typeof
(T).GetProperties();
DataTable table = Table<T>(name, list, propInfo);
IEnumerator<T> enumerator = list.GetEnumerator();
while
(enumerator.MoveNext())
table.Rows.Add(CreateRow<T>(table.NewRow(), enumerator.Current, propInfo));
return
table;
}
Here’s how CreateRow looks like:
private
static
DataRow CreateRow<T>(DataRow row, T listItem, PropertyInfo[] pi)
{
foreach
(PropertyInfo p
in
pi)
row[p.Name.ToString()] = p.GetValue(listItem,
null
);
return
row;
}
and the Table<T> method used in NewTable method:
private
static
DataTable Table<T>(
string
name, IEnumerable<T> list, PropertyInfo[] pi)
{
DataTable table =
new
DataTable(name);
foreach
(PropertyInfo p
in
pi)
table.Columns.Add(p.Name, p.PropertyType);
return
table;
}
Use
So now lets take a look at using this to convert a Generic list into a DataSet. In this example we will create a simple Generic list which will contain only 2 items, we will then use the Extension we created to convert the list into a DataSet:
var list =
new
List<Person>();
list.Add(
new
Person { ID = 1, Name =
"Arunava"
});
list.Add(
new
Person { ID = 2, Name =
"Bubu"
});
DataSet converted = list.ConvertToDataSet(
"TestTable"
);
Hope this helps.
Converting Collection to Dataset
Up Next
Read and Import Excel File into DataSet or DataTable using C# in ASP.NET
Ebook Download
View all
Object Oriented Programming Using C#
Read by 47.2k people
Download Now!
Learn
View all
Membership not found