C# 如何对日期和关联状态进行分组

C# 如何对日期和关联状态进行分组,c#,linq,C#,Linq,因此,我有以下数据: State Date AK 11/27/2014 AL 11/27/2014 HI 11/30/2014 我想在这样的网页上显示数据: State Date AK, AL 11/27/2014 HI 11/30/2014 var result = data.GroupBy(x=>x.Date) .Select(x=>new { D

因此,我有以下数据:

State  Date
AK     11/27/2014   
AL     11/27/2014
HI     11/30/2014
我想在这样的网页上显示数据:

State    Date
AK, AL   11/27/2014
HI       11/30/2014
var result = data.GroupBy(x=>x.Date)
                 .Select(x=>new {
                     Date = x.Key.ToShortDateString(),
                     Satet = String.Join(",",x.Select(y=>y.State))
            });
我使用Linq来获取逗号分隔的状态列表和逗号分隔的日期列表

但这些只是分配给两个单独的字符串

以下是我正在使用的:

State = Version.States
               .Aggregate(string.Empty, (c, state) =>
                   c + state.CountryState.State.StateShortName.ToString() + ", ")
                            .TrimEnd(',', ' '),
StartDate = Version.States
                   .Aggregate(string.Empty, (c, date) =>
                       c + date.StartDate.Date.ToShortDateString() + "," + System.Environment.NewLine)
                               .TrimEnd(',', ' ')

您可以尝试以下方法:

State    Date
AK, AL   11/27/2014
HI       11/30/2014
var result = data.GroupBy(x=>x.Date)
                 .Select(x=>new {
                     Date = x.Key.ToShortDateString(),
                     Satet = String.Join(",",x.Select(y=>y.State))
            });

其中,
数据
保存您发布的表单中的所有数据。

我倾向于首先在公共日期对数据进行分组,然后再投影出组合状态。另外,
String.Join
通常比更通用的
.Aggregate
更容易折叠字符串。您没有发布完整的层次结构,但这里有一个简化模型的解决方案:

public class StateVersion
{
    public string StateShortName;
    public DateTime Date;
}

var stateVersions = new List<StateVersion>
{
    new StateVersion { StateShortName = "AK", Date = new DateTime(2014, 11, 27)},
    new StateVersion { StateShortName = "AL", Date = new DateTime(2014, 11, 27)},
    new StateVersion { StateShortName = "HI", Date = new DateTime(2014, 11, 30)}
};

var aggStates = stateVersions.GroupBy(sv => sv.Date.ToShortDateString())
    .Select(g => String.Join(",", g.Select(x => x.StateShortName)) + " " + g.Key)
    .ToList();

foreach (var s in aggStates)
{
    Debug.WriteLine(s);
}
公共类状态版本
{
公共字符串StateShortName;
公共日期时间日期;
}
var stateVersions=新列表
{
新的StateVersion{StateShortName=“AK”,Date=newDateTime(2014,11,27)},
新的StateVersion{StateShortName=“AL”,Date=newDateTime(2014,11,27)},
新StateVersion{StateShortName=“HI”,Date=newDateTime(2014,11,30)}
};
var aggStates=stateVersions.GroupBy(sv=>sv.Date.ToShortDateString())
.Select(g=>String.Join(“,”,g.Select(x=>x.StateShortName))+“”+g.Key)
.ToList();
foreach(聚集状态下的var s)
{
Debug.WriteLine(s);
}

简单:-

var result = states.GroupBy(x => x.Date)
                   .Select(x => new { State = String.Join(",",x.Select(z => z.State)), 
                                              Date = x.Key.ToShortDateString() });

正在工作。

当输出到screenL System.Linq.Enumerable+其中选择EnumerableInterator
2[System.Linq.IGrouping
2[System.String,VersionState],System.String]时获取此信息