早上好,我有兩個列表,我需要合併到一起,並創建一個數據表分組,我有下面的代碼塊: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