C# EF Core Linq连接或条件使用方法Systax
如何将其转换为单个查询?C# EF Core Linq连接或条件使用方法Systax,c#,.net,linq,entity-framework-core,C#,.net,Linq,Entity Framework Core,如何将其转换为单个查询? var result1 = await _dbContext.Emails.Join(_dbContext.Sms, pn => pn.PNID, sms => sms.From_PNID.Value, (pn, sms) => new {
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 });
想要在
pn.PNID==sms.to\u PNID或pn.PNID==sms上使用like。从\u PNID
LINQ内部连接或条件示例::
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表达式 e、 g
您可以尝试使用
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();
我的团队希望使用方法表达式而不是查询表达式。此查询将生成一个sql交叉连接,就像magicperfect!!很高兴知道;)
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();