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)