C# 循环浏览集合的各个部分

C# 循环浏览集合的各个部分,c#,C#,下面是我创建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,

下面是我创建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);
}
var sb=new StringBuilder();
var list=DataAccess.Read.EventsByID(id);
foreach(列表中的var spevent)
{
sb.AppendFormat(“{0}”:“”,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.events集合={
'07-23-2013' : '',
'07-23-2013' : '',
}
具有两个具有相同对象名称的项,并且不会接受重复项

正确的输出是将具有相同日期的所有项目合并为一个项目,如下所示:

window.eventscollection = {
    '07-23-2013' : '<a href="#">Item One</a><a href="#">Item Two</a>',
}
window.events集合={
'07-23-2013' : '',
}
似乎我需要某种while或recursive循环来查看下一项是否与当前项具有相同的日期,并更改输出,但我似乎无法正确获得它


想法?

您可以将日期相同的项目分组

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());
}
foreach(项目中的变量项目)
{
StringBuilder sb2=新的StringBuilder();
foreach(项目中的var子项目)
追加(String.Format(“,subitem.Link,subitem.Title));
sb.AppendFormat(“{0}”:“{1}”,item.Key,sb2.ToString());
}

您可以将日期与日期相同的项目分组

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());
}
foreach(项目中的变量项目)
{
StringBuilder sb2=新的StringBuilder();
foreach(项目中的var子项目)
追加(String.Format(“,subitem.Link,subitem.Title));
sb.AppendFormat(“{0}”:“{1}”,item.Key,sb2.ToString());
}

您首先需要在列表中添加
GroupBy

var sb = new StringBuilder();
var list = DataAccess.Read.EventsByID(id).GroupBy(e => e.StartTimeDt.Date);
然后你可以在循环中循环

foreach (var dt in list)
{
    sb.AppendFormat("'{0}'",dt.Key.ToString("yyyy-MM-dd"))
    foreach (var spevent in dt)
    {
        sb.AppendFormat("'<a href=\"{0}\">{1}</a>',",, spevent.Link, spevent.Title);
    }
}
foreach(列表中的var dt)
{
sb.AppendFormat(“{0}”,dt.Key.ToString(“yyyy-MM-dd”))
foreach(以dt为单位的var spevent)
{
sb.AppendFormat(““”,,,spevent.Link,spevent.Title);
}
}

您首先需要在列表中添加
GroupBy

var sb = new StringBuilder();
var list = DataAccess.Read.EventsByID(id).GroupBy(e => e.StartTimeDt.Date);
然后你可以在循环中循环

foreach (var dt in list)
{
    sb.AppendFormat("'{0}'",dt.Key.ToString("yyyy-MM-dd"))
    foreach (var spevent in dt)
    {
        sb.AppendFormat("'<a href=\"{0}\">{1}</a>',",, spevent.Link, spevent.Title);
    }
}
foreach(列表中的var dt)
{
sb.AppendFormat(“{0}”,dt.Key.ToString(“yyyy-MM-dd”))
foreach(以dt为单位的var spevent)
{
sb.AppendFormat(““”,,,spevent.Link,spevent.Title);
}
}

尝试使用LINQ
GroupBy()
,仅按日期时间分组然后如何增量循环特定日期范围?尝试使用LINQ
GroupBy()
,仅按日期时间分组然后如何增量循环特定日期范围?