C# - 将列表 System.Object[] 转换为列表 System.Int32[]
Posted
技术标签:
【中文标题】C# - 将列表 System.Object[] 转换为列表 System.Int32[]【英文标题】:C# - Convert a List System.Object[] to List System.Int32[] 【发布时间】:2021-09-28 15:14:18 【问题描述】:我是 C# 新手,
我正在尝试使用已创建的函数here
实际上我不知道如何将列表作为数组作为参数返回。
这里的这个函数将使用 Odoo API 的“write
”方法。
public void SetFieldValue(string field, object value)
var fieldAttribute = _fieldsResult.FirstOrDefault(f => f.FieldName == field);
if (fieldAttribute == null) return;
fieldAttribute.Changed = fieldAttribute.Changed == false;
fieldAttribute.Value = value;
所以我确实喜欢这个,但它不起作用:
foreach (var result in results)
result.SetFieldValue("payment_method_ids", _NewPaymentLine.ToArray());
result.Save();
_NewPaymentLine 是我填写的列表:
var _NewPaymentLine = new List<object>();
_NewPaymentLine.Add(new object[] 4, Payment_Ids.GetField("id").Value );
我只能说input value
是System.Object[]
类型,output value
是System.Int32[]
类型。
实际上,我用 SetFieldValue 返回的是一个 System.Object[],但我认为我必须返回一个 System.Int32[],所以问题是,我该如何制作我的 System.Object 列表[] 进入 System.Int32[]
先谢谢了,希望有人能帮助我。
【问题讨论】:
问题是什么?我真的不明白。如何从 C# 中的方法返回数组? 实际上,我用 SetFieldValue 返回的是一个 System.Object[],但我认为我必须返回一个 System.Int32[],所以问题是,我该怎么做才能让我的System.Object[] 列表进入 System.Int32[] 您必须创建一个新数组。您不能“投射”现有数组。执行int[] resultArray = Array.ConvertAll(inputArray, x => (int)x);
之类的操作,其中inputArray
是您的对象数组-或者如果您需要转换string
(或您的对象可能是其他任何东西),请使用Convert.ToInt32(x)
之类的东西而不是(int)x
。
所以,我尝试这样做,但我无法从 'System.Collections.Generic.List
您的错误表明您有一个List<object>
,但是需要一个List<object>
(List<ojbect>[]
) 的数组。这听起来很奇怪......也许是你的错误?
【参考方案1】:
不确定这是否是你假装的,但你必须创建一个函数来从你的 Object 转换为 Int
public List<int> DoConvert(List<Object> objectsList)
List<int> intList = new List<int>();
foreach(var object in objectsList)
intList.Add(object.MyNumber) //Input your logic here
return intList;
【讨论】:
object
肯定没有.MyNumber
。这对初学者来说可能有点误导。我建议对object
进行某种“样本转换”。你还缺少一个函数名。
@Dominik, RpcField
没有出现在他提供的链接上定义,我认为它会有其他属性,他只想保存其中一些,因此我的“在此处输入您的逻辑”。此外,虽然使用 List以上是关于C# - 将列表 System.Object[] 转换为列表 System.Int32[]的主要内容,如果未能解决你的问题,请参考以下文章
未定义或导入 C# 预定义类型“System.Object”
在 Directory<system.String, system.Object> 中按键访问值 - C# Unity Dictionary