首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

内循环的循环方法

2013-03-06 
求一个内循环的循环方法现有的循环:for (int i 0 i dt.Rows.Count i++){string username dt.Rows[

求一个内循环的循环方法
现有的循环:


            for (int i = 0; i < dt.Rows.Count; i++)
            {
                string username = dt.Rows[i]["UserName"].ToString();
                string u = "{'options':"[{'names':'" + dt.Rows[i]["UserName"].ToString() + "','username':'" + dt.Rows[i]["UserName"].ToString() + "'}]"}";
                Context.Response.Write(u);
            }


现在得出的结果是:
{'options':"[{'names':'陈先生','username':'陈先生'}]"}{'options':"[{'names':'严建军','username':'严建军'}]"}


我想要得出的结果是:
{'options':"[{'names':'陈先生','username':'陈先生'},{'names':'严建军','username':'严建军'}]"}


这个循环应该怎么写?
[解决办法]
这个需求可以用序列化来完成
将DataTable序列化为Json格式

当然也可以像LZ那样手动写代码完成json的序列化
可以把datatable的每一行放进一个list或者string[]中,
用逗号直接拼接输出就可以了
[解决办法]
改成这样:

string u = "{'options':"[";
for (int i = 0; i < dt.Rows.Count; i++)
{
string username = dt.Rows[i]["UserName"].ToString();                
u += "{'names':'" + dt.Rows[i]["UserName"].ToString() + "','username':'" + dt.Rows[i]["UserName"].ToString() + "'}";  
}
u += "]"}
Context.Response.Write(u);

[解决办法]

var sb = new StringBuilder("{"options":[");
for (int i = 0; i < dt.Rows.Count; i++)
{    
    sb.AppendFormat("{"names":"{0}", "username":"{0}"}",  dt.Rows[i]["UserName"].ToString().Replace("\", "\\\"").Replace(""", "\\""));    
}
sb.Append("]}");
Context.Response.Write(sb.ToString());

还是用序列化吧,有些字符是需要转义的,否则会破坏数据的格式
[解决办法]
var sb = new StringBuilder("{"options":[");
for (int i = 0; i < dt.Rows.Count; i++)
{    
    sb.AppendFormat("{"names":"{0}", "username":"{0}"},",  dt.Rows[i]["UserName"].ToString().Replace("\", "\\\"").Replace(""", "\\""));    
}
sb.TrimEnd(',');
sb.Append("]}");
Context.Response.Write(sb.ToString());
[解决办法]
引用:
郁闷,如果有两条以上记录的话,最后}处会多一个“,”无法去除。

有两个办法,一个是用string.Join()拼接数组,这样最后就没有多余的分割符了,另一个就是循环的时候判断下,如果是最后一个,就不输出分隔符。

热点排行