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

Iam太陽神 2013-09-17 09:28:21
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

...全文
303 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Iam太陽神 2013-09-17
  • 打赏
  • 举报
回复
解决了。 在元表追加一新列B。 创建一个新表。元表克隆到新表。 再把A列数据复制到B列.

部分代码:
 Dictionary<int, DictDetail> repair_status = ClientPackage.GetDictionary("RepairCauseReason");

 //Dictionary数据最少,让其做最外层循环,比较优
            foreach (KeyValuePair<int, DictDetail> keyValue in repair_status)
            {
                //找出一组key的相关值,内层循环最少化 
                DataRow[] DrSelect = dt.Select("CAUSE_REASON = " + keyValue.Key);
                if (DrSelect != null && DrSelect.Length > 0)
                {
                    for (int i = 0; i < DrSelect.Length; i++)
                    {
                        DrSelect[i]["NEW_CAUSE_REASON"] = DrSelect[i]["CAUSE_REASON"];
                        DrSelect[i]["NEW_CAUSE_REASON"] = keyValue.Value.DetailName;
                        //修正后 DataRow保存进NewDataTable
                        NewDataTable.ImportRow(DrSelect[i]);
                    }
                }
            }
全栈极简 2013-09-17
  • 打赏
  • 举报
回复
那你就循环构造一个新的DataTable,用dictionary[key]找到相应的值替换即可。
Iam太陽神 2013-09-17
  • 打赏
  • 举报
回复
引用 1 楼 guwei4037 的回复:
static void Main(string[] args)
        {
            Dictionary<int, string> dictionary = new Dictionary<int, string>();
            dictionary.Add(1, "A");
           ...................
        }
大神,可以不用Linq吗?
全栈极简 2013-09-17
  • 打赏
  • 举报
回复
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));
        }
内容概要:本文围绕基于Basisformer模型的时间序列锂离子电池SOC(State of Charge,荷电状态)预测展开研究,利用PyTorch框架实现深度学习模型的构建与训练。通过将历史充放电数据作为输入,Basisformer能够有效捕捉电池状态的动态变化特征,提升SOC预测精度。文中详细介绍了模型结构设计、数据预处理流程、训练策略及实验结果分析,并与传统方法进行对比,验证了该方法在复杂工况下的优越性与鲁棒性。该研究不仅展示了Basisformer在时序建模中的潜力,也为电池管理系统提供了高精度的状态估计解决方案。; 适合人群:具备一定Python编程基础和深度学习理论知识,熟悉PyTorch框架,从事电池管理系统、新能源汽车或智能预测方向研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①应用于电动汽车、储能系统等领域的电池SOC高精度实时估算;②为电池健康管理(BMS)提供可靠的状态输入;③推动深度学习在时间序列预测中的实际落地,提升现有预测模型的泛化能力与稳定性; 阅读建议:建议读者结合标题为【锂电池SOC估计】【PyTorch】基于Basisformer时间序列锂离子电池SOC预测研究(python代码实现)的资源,重点研读所提供的Python代码,深入理解数据处理方式与模型网络结构的设计思路,尝试调整超参数以观察对预测性能的影响,从而全面掌握Basisformer在时序建模中的优势、适用边界及工程化实现路径。

111,131

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧