列表不是在C#中添加的所有值是在、列表

2023-09-04 01:21:59 作者:戒不掉的烟、

我试图跌破$ C $下创建JSON code,code做工精细。

我是从数据库加载值,但是最后的值只有我有没有添加一个输出.remaining值。

  DataTable的DT =新的DataTable();
VAR objectToSerialize =新RootObject();
SqlConnection的连接=新的SqlConnection(ConfigurationManager.ConnectionStrings [DBConnection的]的ToString());
SqlCommand的命令=新的SqlCommand(选择IFlicksMenu *,连接);
SqlDataAdapter的DA =新的SqlDataAdapter(命令);
da.Fill(DT);

的foreach(在dt.Rows的DataRow博士)
{
    的foreach(COL的DataColumn在dt.Columns)
    {
        objectToSerialize.contacts =新的名单,其中,续>
        {
            新续
            {
                SNO =博士[电影。toString()方法,
                NAME =博士[画廊。toString()方法,
                地址=博士[明星。的ToString()
                性别=博士[视频。toString()方法,
                EM =博士[EM]的ToString()
                手机=新电话{移动=博士[phonone。的ToString()}
            },
        };
    }

    JavaScriptSerializer串行=新JavaScriptSerializer();
    回复于(serializer.Serialize(新{项目= objectToSerialize.contacts}));
}
 

输出

  {
    项目:[
         {
        电话:{
            手机:99528748474
                },
        SNO:女主角,
        名:女主角,
        新兴市场:SCD
        地址:女主角,
        性别:预告片
        }
    ]
}
 

解决方案 ACCESS数据库中怎么给字段添加值列表啊

您重新联系人因为当你想在循环的开始创造和不断增加每个项目到列表:

  VAR项目=新的名单,其中,续>();
的foreach(在dt.Rows的DataRow博士)
{
    items.Add(新续{
        SNO =博士[电影。toString()方法,
        NAME =博士[画廊。toString()方法,
        地址=博士[明星。的ToString()
        性别=博士[视频。toString()方法,
        EM =博士[EM]的ToString()
        手机=新电话{移动=博士[phonone。的ToString()}
    });
}
objectToSerialize.contacts =项目;
 

你也需要删除内部循环

 的foreach(DataColumn的山坳中dt.Columns)
 

因为这将有效地列数乘以行数

i tried below code for create json code ,code working fine.

i was load value from db,but last value only i got a output .remaining value not added..

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 }));
}

output is

{
    "item":[
         {
        "phone":{
            "mobile":"99528748474"
                },
        "sno":"ACTRESS",
        "name":"ACTRESS",
        "em":"scd",
        "address":"ACTRESS",
        "gender":"TRAILER"
        }
    ]
}

解决方案

You recreate contacts for each item when you want create in on the beginning of the loop and keep adding to the list:

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;

also you need to remove internal loop

foreach (DataColumn col in dt.Columns)

as it will effectively multiply number of rows by number of columns