这是我正在创建一个JSON对象集合的循环:
var sb = new StringBuilder();
var list = DataAccess.Read.EventsByID(id);
foreach (var spevent in list)
{
sb.AppendFormat("'{0}':'<a href=\"{1}\">{2}</a>',",spevent.StartTimeDt.ToString("MM-dd-yyyy"), spevent.Link, spevent.Title);
}
缺陷是,如果我有多个具有相同日期的事件,那么我只会得到最后一个事件,因为
window.eventscollection = {
'07-23-2013' : '<a href="#">Item One</a>',
'07-23-2013' : '<a href="#">Item Two</a>',
}
有两个具有相同对象名称的项目,并且不会重复。
正确的输出是将具有相同日期的所有项目合并为一个项目,如下所示:
window.eventscollection = {
'07-23-2013' : '<a href="#">Item One</a><a href="#">Item Two</a>',
}
似乎我需要某种形式的while或递归循环,以查看下一项是否与当前项具有相同的日期并更改输出,但是我似乎无法正确执行。
有什么想法吗?
最佳答案
您可以将相同日期的商品归为一组
var sb = new StringBuilder();
var items = DataAccess.Read.EventsByID(id).GroupBy(p=>StartTimeDt.ToString("MM-dd-yyyy"));
然后遍历分组:
foreach (var item in items)
{
StringBuilder sb2 = new StringBuilder();
foreach(var subitem in item)
sb2.Append(String.Format("<a href=\"{1}\">{2}</a>",subitem.Link,subitem.Title));
sb.AppendFormat("'{0}':'{1}',",item.Key, sb2.ToString());
}
关于c# - 遍历集合的各个部分,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17876697/