EF Core Linq Join with OR 条件使用方法 Systax



如何将其转换为单个查询?

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

想拥有像 ONpn.PNID == sms.To_PNID OR pn.PNID == sms.From_PNID

您可以尝试使用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();

LINQ 内部联接与 OR 条件 示例::

var q= 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();

试试这个例子!!

可以使用传统的 LINQ 而不是 LINQ 表达式。

例如

var records = (from recordA in TableA 
from recordB in TableB 
where recordA.Column_1 == recordB.Column_1 || recordA.Column_2 == recordB.Column_2
).ToList();

最新更新