In my C# project, I have a dictionary, its values are currently static.
x
var dict = new Dictionary<string, string>
{
["0000"] = "UK",
["1111"] = "JAPAN",
["2222"] = "CHINA",
["3333"] = "SRI LANKA",
["4444"] = "AUSI",
["5555"] = "USA",
};
Now I need to set to its values in dynamically. how can I do that? I have an Oracle DB table called “country
” there have two columns called, ID
and CountryName
as follows,
ID CID CountryName
1 0000 UK
2 1111 JAPAN
3 2222 CHINA
4 3333 SRI LANKA
5 4444 AUSI
6 5555 USA
How can I set this table values to my dictionary? Thanks in advance.
Advertisement
Answer
Here I used ToDictionary
extension method, which I used to convert the IEnumerable collection into a new dictionary.
public static void Main()
{
DataTable dt = new DataTable();
dt.Columns.Add("ID", typeof(int));
dt.Columns.Add("CID", typeof(string));
dt.Columns.Add("CountryName", typeof(string));
dt.Rows.Add(new object[] { 1, "0000", "UK" });
dt.Rows.Add(new object[] { 2, "1111", "JAPAN" });
dt.Rows.Add(new object[] { 3, "2222", "CHINA" });
dt.Rows.Add(new object[] { 4, "3333", "SRI LANKA" });
dt.Rows.Add(new object[] { 5, "4444", "AUSI" });
dt.Rows.Add(new object[] { 6, "5555", "USA" });
Dictionary<string, string> dict = GetDictionary(dt);
}
public static Dictionary<string, string> GetDictionary(DataTable dt)
{
return dt.AsEnumerable()
.ToDictionary<DataRow, string, string>(row => row.Field<string>(1),
row => row.Field<string>(2));
}
Dotnet fiddle: https://dotnetfiddle.net/KNs9Xl