Расчет средневзвешенного с LINQ

Моя цель - получить средневзвешенное значение из одной таблицы на основе первичного ключа других таблиц.

Пример данных:

Таблица 1

Key     WEIGHTED_AVERAGE

0200    0

Таблица 2

ForeignKey    Length    Value
0200          105       52
0200          105       60
0200          105       54
0200          105       -1
0200          47        55

Мне нужно получить средневзвешенное значение на основе длины сегмента, и мне нужно игнорировать значения -1. Я знаю, как сделать это в SQL, но моя цель - сделать это в LINQ. В SQL это выглядит примерно так:

SELECT Sum(t2.Value*t2.Length)/Sum(t2.Length) AS WEIGHTED_AVERAGE
FROM Table1 t1, Table2 t2
WHERE t2.Value <> -1
AND t2.ForeignKey = t1.Key;

Я все еще довольно новичок в LINQ, и мне трудно понять, как я могу это перевести. Средневзвешенное значение результата должно составить примерно 55,3. Спасибо.

Ответы на вопрос(3)

Ваш ответ на вопрос