如何在 ExpandoObject Xamarin.forms 中添加项目的动态数组
how to add dynamic array of item in ExpandoObject Xamarin.forms
我想在 ExpandoObject 中添加动态选择的项目,然后以 json 值的形式打印它。如果我选择 2 个值,它只打印最后一个值 2times.My 问题是无论我选择它只打印最后一个值。
我的代码:
宣言
dynamic output = new List<dynamic>();
dynamic foo = new ExpandoObject();
List<int> selected = new List<int>();
开关切换功能:
private void Switch_Toggled(object sender, ToggledEventArgs e)
{
var switch1 = (Switch)sender;
var human = (Human)switch1.BindingContext;
var id = human.retail_modified_item_id;
var name = human.name;
var old_price = human.old_price;
var new_price = human.new_price;
if (switch1.IsToggled)
{
if (!selected.Contains(id))
{
selected.Add(id);
foo.id = id;
foo.name = name;
foo.old_price=old_price;
foo.new_price=new_price;
output.Add(foo);
}
}
else
{
if (selected.Contains(id)) selected.Remove(id);
}
}
正在打印 Json 值;
string json = Newtonsoft.Json.JsonConvert.SerializeObject(output);
Debug.WriteLine(json);
我的输出是:
[{"id":1000739,"name":"Hashbrowns","old_price":0.99,"new_price":8.5},{"id":1000739,"name":"Hashbrowns","old_price":0.99,"new_price":8.5}]
如果我选择了 2 个值,它只打印最后一个值 2 次。
dynamic foo = new ExpandoObject();
你在这里声明了全局变量,所以第二次调用下面的代码时,你重新假设第一个 foo 并再次添加它,所以输出列表中有两个相同的项目。
foo.id = id;
foo.name = name;
foo.old_price=old_price;
foo.new_price=new_price;
output.Add(foo);
你可以这样改:
if (!selected.Contains(id))
{
selected.Add(id);
dynamic foo = new ExpandoObject(); // local variables
foo.id = id;
foo.name = name;
foo.old_price=old_price;
foo.new_price=new_price;
output.Add(foo);
}
我想在 ExpandoObject 中添加动态选择的项目,然后以 json 值的形式打印它。如果我选择 2 个值,它只打印最后一个值 2times.My 问题是无论我选择它只打印最后一个值。
我的代码: 宣言
dynamic output = new List<dynamic>();
dynamic foo = new ExpandoObject();
List<int> selected = new List<int>();
开关切换功能:
private void Switch_Toggled(object sender, ToggledEventArgs e)
{
var switch1 = (Switch)sender;
var human = (Human)switch1.BindingContext;
var id = human.retail_modified_item_id;
var name = human.name;
var old_price = human.old_price;
var new_price = human.new_price;
if (switch1.IsToggled)
{
if (!selected.Contains(id))
{
selected.Add(id);
foo.id = id;
foo.name = name;
foo.old_price=old_price;
foo.new_price=new_price;
output.Add(foo);
}
}
else
{
if (selected.Contains(id)) selected.Remove(id);
}
}
正在打印 Json 值;
string json = Newtonsoft.Json.JsonConvert.SerializeObject(output);
Debug.WriteLine(json);
我的输出是:
[{"id":1000739,"name":"Hashbrowns","old_price":0.99,"new_price":8.5},{"id":1000739,"name":"Hashbrowns","old_price":0.99,"new_price":8.5}]
如果我选择了 2 个值,它只打印最后一个值 2 次。
dynamic foo = new ExpandoObject();
你在这里声明了全局变量,所以第二次调用下面的代码时,你重新假设第一个 foo 并再次添加它,所以输出列表中有两个相同的项目。
foo.id = id;
foo.name = name;
foo.old_price=old_price;
foo.new_price=new_price;
output.Add(foo);
你可以这样改:
if (!selected.Contains(id))
{
selected.Add(id);
dynamic foo = new ExpandoObject(); // local variables
foo.id = id;
foo.name = name;
foo.old_price=old_price;
foo.new_price=new_price;
output.Add(foo);
}