首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

Dictionary 跟 DataTable 相关.要求性能。求大神

2013-09-18 
Dictionary 和 DataTable 相关.要求性能。求大神!Dictionary 数据1A2B3C.....DataTable数据011900227503275

Dictionary 和 DataTable 相关.要求性能。求大神!
Dictionary 数据
1  A
2  B
3  C
.....
DataTable  数据
01         1          90
02         2          75
03         2          75
04         1          85
.........................
------------------------------------------
需要得到以下新数据:

New DataTable 
01         A          90
02         B          75
03         B          75
04         A          85

dictionary 性能
[解决办法]

static void Main(string[] args)
        {
            Dictionary<int, string> dictionary = new Dictionary<int, string>();
            dictionary.Add(1, "A");
            dictionary.Add(2, "B");
            dictionary.Add(3, "C");

            DataTable dt = new DataTable();
            dt.Columns.Add("id", typeof(string));
            dt.Columns.Add("num", typeof(int));
            dt.Columns.Add("data", typeof(string));



            DataRow dr = null;
            dr = dt.NewRow();
            dr["id"] = "01";
            dr["num"] = 1;
            dr["data"] = "90";
            dt.Rows.Add(dr);

            dr = dt.NewRow();
            dr["id"] = "02";
            dr["num"] = 2;
            dr["data"] = "75";
            dt.Rows.Add(dr);

            dr = dt.NewRow();
            dr["id"] = "03";
            dr["num"] = 2;
            dr["data"] = "75";
            dt.Rows.Add(dr);

            dr = dt.NewRow();
            dr["id"] = "04";
            dr["num"] = 1;
            dr["data"] = "85";
            dt.Rows.Add(dr);

            var result = from p in dt.AsEnumerable()
                         from q in dictionary.AsEnumerable()
                         where q.Key == p.Field<int>("num")
                         select new { ID = p.Field<string>("id"), q.Value, DATA = p.Field<string>("data") };


            result.ToList().ForEach(x => Console.WriteLine(x.ID + "-" + x.Value + "-" + x.DATA));
        }


[解决办法]
那你就循环构造一个新的DataTable,用dictionary[key]找到相应的值替换即可。

热点排行