列表中没有添加c#中的所有值
本文关键字:添加 列表 | 更新日期: 2023-09-27 17:49:28
我尝试下面的代码创建json代码,代码工作良好。
我从数据库中加载值,但最后一个值只有我得到一个输出,剩下的值没有添加…
DataTable dt = new DataTable();
var objectToSerialize = new RootObject();
SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["dbconnection"].ToString());
SqlCommand command = new SqlCommand("select * from IFlicksMenu", connection);
SqlDataAdapter da = new SqlDataAdapter(command);
da.Fill(dt);
foreach (DataRow dr in dt.Rows)
{
foreach (DataColumn col in dt.Columns)
{
objectToSerialize.contacts = new List<Cont>
{
new Cont
{
sno = dr["Cinema"].ToString(),
name = dr["Gallery"].ToString(),
address = dr["star"].ToString(),
gender = dr["video"].ToString(),
em = dr["em"].ToString(),
phone=new Phone { mobile=dr["phonone"].ToString() }
},
};
}
JavaScriptSerializer serializer = new JavaScriptSerializer();
Response.Write(serializer.Serialize(new { item = objectToSerialize.contacts }));
}
输出{
"item":[
{
"phone":{
"mobile":"99528748474"
},
"sno":"ACTRESS",
"name":"ACTRESS",
"em":"scd",
"address":"ACTRESS",
"gender":"TRAILER"
}
]
}
每次迭代都在foreach
中实例化list,因此它需要最后的迭代。你可以在foreach
外定义List对象,在foreach
内定义值
List<Cont> ContCollection = new List<Cont>();
foreach (DataRow dr in dt.Rows)
{
foreach (DataColumn col in dt.Columns)
{
ContCollection.Add(new Cont(){
sno = dr["Cinema"].ToString(),
name = dr["Gallery"].ToString(),
address = dr["star"].ToString(),
gender = dr["video"].ToString(),
em = dr["em"].ToString(),
phone=new Phone { mobile=dr["phonone"].ToString() }
});
}
objectToSerialize.contacts = ContCollection;
JavaScriptSerializer serializer = new JavaScriptSerializer();
Response.Write(serializer.Serialize(new { item = objectToSerialize.contacts }));
}
当您想在循环开始时创建in并不断添加到列表中时,您可以为每个项目重新创建contacts
:
var items = new List<Cont>();
foreach (DataRow dr in dt.Rows)
{
items.Add(new Cont{
sno = dr["Cinema"].ToString(),
name = dr["Gallery"].ToString(),
address = dr["star"].ToString(),
gender = dr["video"].ToString(),
em = dr["em"].ToString(),
phone = new Phone{ mobile=dr["phonone"].ToString() }
});
}
objectToSerialize.contacts = items;
你还需要删除内部循环
foreach (DataColumn col in dt.Columns)
,因为它将有效地将行数乘以列数
尝试使用
objectToSerialize.contacts.Add( new List<Cont>
{
new Cont{ sno = dr["Cinema"].ToString(), name = dr["Gallery"].ToString(), address = dr["star"].ToString(), gender = dr["video"].ToString(), em = dr["em"].ToString(),phone=new Phone{mobile=dr["phonone"].ToString()} },
});
不是objectToSerialize.contacts = new List<Cont>
{
new Cont{ sno = dr["Cinema"].ToString(), name = dr["Gallery"].ToString(), address = dr["star"].ToString(), gender = dr["video"].ToString(), em = dr["em"].ToString(),phone=new Phone{mobile=dr["phonone"].ToString()} },
};