Konwertuj ciąg znaków na dziesiętne w łączeniu grupowym linq

Muszę połączyć dwie tabele, ale zwrócić tylko te rekordy w drugiej tabeli, gdzie suma „wartości” wszystkich rekordów związanych z rekordem w pierwszej tabeli jest taka sama.

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)))

Używam Entity Framework Code-First.

Oczywiście narzeka Linq

LINQ to Entities nie rozpoznaje metody „System.Decimal Parse (System.String)”

Tabele są ogromne i muszę zmniejszyć wydajność, więc wykonanie tej konwersji po stronie klienta nie jest możliwe. Konwersja typów kolumn również nie jest opcją.

Zapytanie SQL to:

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