早上好,我有两个列表,我需要合并到一起,并创建一个数据表分组,我有下面的代码块:LINQ合并两个列表,并通过时间戳
private static DataTable GetDataTable(IList<DataValue> listOneDataValues,
IList<DataValue> listTwoDataValues)
{
var dataTable = new DataTable();
dataTable.Columns.Add("ColumnFromListOne");
dataTable.Columns.Add("ColumnFromListTwo");
dataTable.Columns.Add("TimeStamp");
//Group the lists together
var query = (from listOne in listOneDataValues
from listTwo in listTwoDataValues
let columnFromListOne= listOne.DoubleValue
let columnFromListTwo= listTwo.DoubleValue
let timestamp = listOne.TimeStamp
where listOne.TimeStamp == listTwo.TimeStamp
select new {ColumnFromListTwo = columnFromListOne, ColumnFromListOne = columnFromListTwo, Timestamp = timestamp});
foreach(var q in query)
dataTable.Rows.Add(q.ColumnFromListOne, q.ColumnFromListTwo, q.TimeStamp);
return dataTable;
}
问题是这两个列表包含时间戳,它们在几秒钟内关闭,并且它们根本不对齐,因此,即使每个列表包含200多条记录,我的最终结果也会以数据表中的一条或零条记录结束。我对LINQ非常不满,并希望得到一个正确的方向。我想我需要在分组之前插入时间戳,但我想知道做这种事情的最佳实践模式。
你想怎么处理那几秒都关闭时间戳?他们*不同,所以他们应该被视为不同。你可以舍入或舍入到最接近的分钟,但是如果时间戳跨越那条线呢?你可以找到他们之间的距离,但如果你有很多事件,你会得到重叠。 – Bobson 2013-02-11 16:14:25
粒度的最低级别是每5分钟一次。我想要四舍五入到最接近的5分钟。 – Gallen 2013-02-11 16:16:45