我一直在尋找如何加入兩個表(數據和DataValues,一對多)和填充類型的字典。加入使用LINQ兩個表,並填寫他們的字典
數據記錄可能是成千上萬(例如500,000或更多),每個數據可能有10到20個數據值,這使得它成爲一個更重的查詢,所以在這裏的性能非常重要。
這裏是我寫的代碼:
// Passed via the arguments, for example, sensorIDs would contain:
int[] sensorIDs = { 0, 1, 2, 3, 4, 5, 6, 17, 18 };
Dictionary<Data, List<DataValue>> dict = new Dictionary<Data, List<DataValue>>();
foreach (Data Data in dt.Datas)
{
var dValues = from d in dt.Datas
join dV in dt.DataValues on d.DataID equals dV.DataID
where (SensorIDs.Contains(dV.SensorID))
select dV;
dict.Add(Data, dValues.ToList<DataValue>());
}
但這種方法有一個顯著的性能問題,需要很長的時間來執行。 不知道我是否需要使用SQL視圖。有什麼建議麼?
你有多大的數據表?每天(只是數據) – Learner
約1200的記錄,並且每個數據可以具有5至18 DataValue。 「數據」表的當前行數是125361 – Arman
您所查詢的是不正確的,也順便說一下,你應該做的'dt.DataValues'一個選擇和包括檢查'Data.DataID == dV.DataID'以及您'where'聲明 – konkked