Une dos tablas usando linq, y llena un Diccionario de ellas

He estado buscando cómo unir dos tablas (datos y valores de datos, de uno a muchos) y llenar un diccionario de tipo.

Los registros de los datos pueden ser miles (por ejemplo, 500,000 o más) y cada uno de los datos puede tener entre 10 y 20 valores de datos, lo que hace que sea una consulta mucho más pesada, por lo que el rendimiento es realmente importante aquí.

Aquí está el código que he escrito:

// 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>());
}

Pero este enfoque tiene un problema de rendimiento significativo y requiere mucho tiempo para ejecutarse. No estoy seguro si necesito usar vistas SQL. ¿alguna sugerencia?

Respuestas a la pregunta(3)

Su respuesta a la pregunta