Converter string em decimal na consulta linq de junção de grupo

Eu tenho que juntar duas tabelas, mas para retornar apenas os registros na segunda tabela, onde soma de 'Value' de todos os registros associados com o registro na primeira tabela é o mesmo.

from p in db.TPs
join n in db.TNs
on p.Key equals n.Key
where (decimal.Parse(p.Value) == db.TNs.Where( nn => nn.Key == p.Key )
                                       .Sum( nn=> decimal.Parse(kk.Value)))

Estou usando o Entity Framework Code-First.

Claro, Linq reclama

LINQ to Entities não reconhece o método 'System.Decimal Parse (System.String)' método

As tabelas são enormes e devo reduzir a saída, portanto, fazer essa conversão no lado do cliente não é possível. A conversão do tipo de coluna também não é uma opção.

A consulta SQL é:

select * from TP as p
join * from TN as n on n.Key = p.Key
where p.Value = (select sum(cast(n.Value as decimal(12,2))) from TN where Key = p.Key)

questionAnswers(3)

yourAnswerToTheQuestion