向 ExpandoObject 添加新的 [] 值
Add new [] values to ExpandoObject
我想将 myArr
到 myObj
的所有值相加。
int[,] myArr = {
{1, 2},
{3, 4}
};
dynamic myObj = new ExpandoObject();
foreach(var myInt in myArr)
{
myObj.Ints = new[]
{
new
{
value = myInt,
value_plus_1 = myInt + 1
}
};
}
在 foreach 循环结束时,我想要一个这样的对象:
Ints: [
{
value: 1,
value_plus_1: 2
},
{
value: 2,
value_plus_1: 3
},
{
value: 3,
value_plus_1: 4
},
{
value: 4,
value_plus_1: 5
}
]
但是每次迭代我都会覆盖上一次迭代的值,所以最后,我有这样的东西:
Ints: [
{
{
value: 4,
value_plus_1: 5
}
]
我需要更改什么?
对于循环的每次迭代,myObj.Ints
都会重新设置一个新的数组值。
相反,您必须通过索引将每个对象添加到数组中。
dynamic myObj = new ExpandoObject();
myObj.Ints = new dynamic[myArr.Length];
int index = 0;
foreach(var myInt in myArr)
{
myObj.Ints[index] =
new
{
value = myInt,
value_plus_1 = myInt + 1
};
index++;
}
另一种方法是通过 System.Linq
将对象添加到 List
。然后将列表赋值给myObj.Ints
.
using System.Linq;
dynamic myObj = new ExpandoObject();
var list = new List<dynamic>();
foreach(var myInt in myArr)
{
list.Add(
new
{
value = myInt,
value_plus_1 = myInt + 1
}
);
}
myObj.Ints = list;
我想将 myArr
到 myObj
的所有值相加。
int[,] myArr = {
{1, 2},
{3, 4}
};
dynamic myObj = new ExpandoObject();
foreach(var myInt in myArr)
{
myObj.Ints = new[]
{
new
{
value = myInt,
value_plus_1 = myInt + 1
}
};
}
在 foreach 循环结束时,我想要一个这样的对象:
Ints: [
{
value: 1,
value_plus_1: 2
},
{
value: 2,
value_plus_1: 3
},
{
value: 3,
value_plus_1: 4
},
{
value: 4,
value_plus_1: 5
}
]
但是每次迭代我都会覆盖上一次迭代的值,所以最后,我有这样的东西:
Ints: [
{
{
value: 4,
value_plus_1: 5
}
]
我需要更改什么?
对于循环的每次迭代,myObj.Ints
都会重新设置一个新的数组值。
相反,您必须通过索引将每个对象添加到数组中。
dynamic myObj = new ExpandoObject();
myObj.Ints = new dynamic[myArr.Length];
int index = 0;
foreach(var myInt in myArr)
{
myObj.Ints[index] =
new
{
value = myInt,
value_plus_1 = myInt + 1
};
index++;
}
另一种方法是通过 System.Linq
将对象添加到 List
。然后将列表赋值给myObj.Ints
.
using System.Linq;
dynamic myObj = new ExpandoObject();
var list = new List<dynamic>();
foreach(var myInt in myArr)
{
list.Add(
new
{
value = myInt,
value_plus_1 = myInt + 1
}
);
}
myObj.Ints = list;