在我的C#项目中,我有一个字典,它的值目前是静态的。
var dict = new Dictionary<string, string>
{
["0000"] = "UK",
["1111"] = "JAPAN",
["2222"] = "CHINA",
["3333"] = "SRI LANKA",
["4444"] = "AUSI",
["5555"] = "USA",
};
现在,我需要动态设置其值。我怎样才能做到这一点?我有一个名为“ country
”的Oracle数据库表,有两列,分别为ID
和CountryName
,
ID CID CountryName
1 0000 UK
2 1111 JAPAN
3 2222 CHINA
4 3333 SRI LANKA
5 4444 AUSI
6 5555 USA
如何将此表值设置为字典?预先感谢。
答案 0 :(得分:2)
使用oracle dataadapter将数据放入数据表中(请参见https://msdn.microsoft.com/en-us/library/system.data.oracleclient.oracledataadapter(v=vs.110).aspx)。然后使用下面的代码。您不需要像我一样将数据放入数据表中。刚刚将数据添加到表中以测试用于创建字典的代码。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
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 = dt.AsEnumerable()
.GroupBy(x => x.Field<string>("CID"), y => y.Field<string>("CountryName"))
.ToDictionary(x => x.Key, y => y.FirstOrDefault());
}
}
}
答案 1 :(得分:1)
如果您具有Oracle 12.2,则可以执行查询,该查询通过使用JSON_ARRAY返回json字符串:
select JSON_ARRAY (cid, countryname) from country
如果您的数据为json格式,则很容易通过使用Json.Net将其转换为字典:
string json = @"{""0000"":""UK"",""1111"":""Japan""}";
var dic = JsonConvert.DeserializeObject<Dictionary<string, string>>(json);