Step 1: Used Namespaces:

using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Data;

Step 2: Create a DataTable and add DataColumns to it:

DataTable dtTable = new DataTable();
dtTable.Columns.Add(new DataColumn("Company", typeof(System.String)));
dtTable.Columns.Add(new DataColumn("Product", typeof(System.String)));

dtTable.Columns.Add(new DataColumn("IsLive", typeof(System.Boolean)));

Step 3: Add rows to the DataTable:

DataRow dr = dtTable.NewRow();

dr["Company"] = "Microsoft";

dr["Product"] = "VisualStudio";

dr["IsLive"] = true;

dtTable.Rows.Add(dr);

dr = dtTable.NewRow();

dr["Company"] = "Microsoft";

dr["Product"] = "Sql Server";

dr["IsLive"] = true;

dtTable.Rows.Add(dr);

Step 4: Convert a DataTable to a Generic Dictionary<K,T> :

//Filter the required data from datatable.

Dictionary<String, String> dic = (from order in dtTable.AsEnumerable()

where order.Field<Boolean>("IsLive") == true

select new

{

//Get the specific Field from the datatable.

company = order.Field<String>("Company"),

product = order.Field<String>("Product")

}).AsEnumerable()

.ToDictionary(k => k.product, v => v.company);

Step 5: Explanation of the above snippet:

1. Convert DataTable As Enumerable.

from order in dtTable.AsEnumerable()

2. Filter using the required column.

where order.Field<Boolean>("IsLive") == true

3. Selecting the require field and add it as Enumerable.

select
new
{
//Get the specific Field from the datatable.
company = order.Field<String>("Company"),
product = order.Field<String>("Product")
}).AsEnumerable()

4. Convert Enumerable into Dictionary

.ToDictionary(k => k.product, v => v.company);

Thanks for reading this article. Have a nice day.