Come posso rendere questo in una singola query?
var result1 = await _dbContext.Emails.Join(_dbContext.Sms,
pn => pn.PNID,
sms => sms.From_PNID.Value,
(pn, sms) => new { sms, pn });
var resut2 = await _dbContext.Emails.Join(_dbContext.Sms,
pn => pn.PNID,
sms => sms.To_PNID.Value,
(pn, sms) => new { sms, pn });
Vuoi avere come ON pn.PNID == sms.To_PNID OR pn.PNID == sms.From_PNID
Puoi provare a farlo utilizzando il metodo di estensione SelectMany
:
var result1 = await dbContext.Emails
.SelectMany(e=>dbContext.Sms.Where(s=>e.PNID==From_PNID.Value
|| e.PNID==To_PNID.Value)
.Select(e=>new {Email=e,SMS=s})).ToListAsync();
Puoi usare LINQ convenzionale invece dell'espressione LINQ.
per esempio
var records = (from recordA in TableA
from recordB in TableB
where recordA.Column_1 == recordB.Column_1 || recordA.Column_2 == recordB.Column_2
).ToList();