It looks like you fetch all the rows from fields and records separately and you don't join them to transaction.
What if you try a bit different syntax
var query = from t in context.Transactions
join f in context.Fields on t.TransactionId equals f.TransactionId
join r in context.Records in f.RecordId equals r.RecordId
where t.TransactionId == transactionId
select transaction;
However, that would return data only form transaction so if you need data from the other tables also you need to modify the select portion accordingly.
[ADDITION]
var query = from t in context.Transactions
join r in context.Records in t.TransactionId equals r.TransactionId
join f in context.Fields on r.RecordId equals f.RecordId
where t.TransactionId == transactionId
select transaction;