Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# EF Core Linq连接或条件使用方法Systax_C#_.net_Linq_Entity Framework Core - Fatal编程技术网

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