我有一个对象列表,其中对象的一个属性是日期字符串,如果在JSON中,它将如下所示:
// this is a List<Measurements>
measurements: [
{
"Timestamp": "6/7/2016 10:25:27 AM",
"FactoryTimestamp": "6/7/2016 10:25:27 AM",
"ValueInMgPerDl": 265,
"TrendArrow": 4
},
{
"Timestamp": "6/7/2016 10:24:27 AM",
"FactoryTimestamp": "6/7/2016 10:24:27 AM",
"ValueInMgPerDl": 301,
"TrendArrow": 5
},
{
"Timestamp": "6/6/2016 11:24:27 PM",
"FactoryTimestamp": "6/6/2016 11:24:27 PM",
"ValueInMgPerDl": 102,
"TrendArrow": 2
},
{
"Timestamp": "6/6/2016 11:23:27 PM",
"FactoryTimestamp": "6/6/2016 11:23:27 PM",
"ValueInMgPerDl": 99,
"TrendArrow": 2
}
]
我试图创建一个新的对象列表,在这个列表中,Timestamp
param对它们进行分组,希望我不需要创建新类型但是可以而是使用通用。这样,新列表看起来像这样:
measurementGroups [
{
"date": "6/7/2016 10:25:27 AM",
"measurementData" : [
{
"Timestamp": "6/7/2016 10:25:27 AM",
"FactoryTimestamp": "6/7/2016 10:25:27 AM",
"ValueInMgPerDl": 265,
"TrendArrow": 4
},
{
"Timestamp": "6/7/2016 10:24:27 AM",
"FactoryTimestamp": "6/7/2016 10:24:27 AM",
"ValueInMgPerDl": 301,
"TrendArrow": 5
}
]
},
{
"date": "6/6/2016 11:24:27 PM",
"measurementData" : [
{
"Timestamp": "6/6/2016 11:24:27 PM",
"FactoryTimestamp": "6/6/2016 11:24:27 PM",
"ValueInMgPerDl": 102,
"TrendArrow": 2
},
{
"Timestamp": "6/6/2016 11:23:27 PM",
"FactoryTimestamp": "6/6/2016 11:23:27 PM",
"ValueInMgPerDl": 99,
"TrendArrow": 2
}
}
]
我尝试使用Linq完成此操作,就像我在下面显示的那样,但是那只返回了按日期分组的列表列表。我能用Linq实现我的目标,还是我需要采取另一种方法?
// Current attempt using linq
var measurementGroupList = measurements
.GroupBy(d => Convert.ToDateTime(d.Timestamp).Date)
.Select(grp => grp.ToList())
.ToList();
答案 0 :(得分:1)
我假设您有一个测量类
public class Measurements
{
public DateTime Timestamp { get; set; }
public DateTime FactoryTimestamp { get; set; }
public int ValueInMgPerDl { get; set; }
public int TrendArrow { get; set; }
}
和var MeasurementsList = new List<Measurements>(){.....}
并在此之上尝试以下查询
var measurementGroupList= MeasurementsList.GroupBy(s => s.Timestamp).Select(grp => new { date = grp.Key, measurementData = grp.Select(s => s) }).ToList();