おはようございます。結合してデータ テーブルを作成する必要がある 2 つのリストがあります。次のコード ブロックがあります。
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;
}
問題は、2 つのリストに数秒ずれているタイムスタンプが含まれており、それらがまったく一致しないため、各リストに 200 以上のレコードが含まれていても、最終結果はデータテーブルに 1 つまたは 0 のレコードになってしまうことです。私はLINQがかなり苦手で、正しい方向へのポイントをいただければ幸いです。グループ化する前にタイムスタンプを補間する必要があると思いますが、このようなことを行うためのベスト プラクティス パターンを知りたいです。