【发布时间】:2016-06-08 16:43:48
【问题描述】:
我有一个对象列表,其中对象的属性之一是日期字符串,如果在 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 参数分组,希望我不需要创建新类型而是可以使用泛型。这样,新列表将如下所示:
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();
【问题讨论】:
-
groupBy 返回一个二维键列表,其中包含每个键的值列表。要获取单个值,您需要使用两个 Select 方法 .Select(grp => grp).Select(item => ........
-
在典型情况下,我可以接受 GroupBy 返回数据的方式。在这种情况下,我需要将数据结构与中间示例类似。
-
@jdweng 你能举例说明你的意思吗?