C# 如何将存储Object数组的List转换为System.Int32[]
解决方案
1 先修正数据结构错误(核心问题)
Odoo的write方法针对多对多/一对多字段的操作指令是一维扁平的int序列,你当前的写法把(4, 关联ID)这个指令打包成了独立数组塞进List<object>,最终生成的是嵌套数组,不符合接口要求,需要先把指令展开:
// 直接声明为List<int>,避免后续类型转换 var _NewPaymentLine = new List<int>(); // 提取付款ID并转成int int paymentId = Convert.ToInt32(Payment_Ids.GetField("id").Value); // 依次添加指令编码和关联ID,不要打包成数组 _NewPaymentLine.Add(4); // Odoo关联已有记录的指令编码 _NewPaymentLine.Add(paymentId);
调用的时候直接ToArray()就是符合要求的int[]类型:
foreach (var result in results) { result.SetFieldValue("payment_method_ids", _NewPaymentLine.ToArray()); result.Save(); }
2 现有List
相关产品推荐
相关产品推荐

