Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/299.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# 将SQL查询转换为lambda表达式_C#_Sql Server_Linq_Lambda_Entity Framework Core - Fatal编程技术网

C# 将SQL查询转换为lambda表达式

C# 将SQL查询转换为lambda表达式,c#,sql-server,linq,lambda,entity-framework-core,C#,Sql Server,Linq,Lambda,Entity Framework Core,SQL查询: SELECT M.MailItemId, m.Subject, ISNULL(m.SendCC, ''), ISNULL(attachments.counter, 0) Counters, M.CreationDate FROM MailItem AS M LEFT OUTER JOIN (SELECT MailItemId, COUNT(MailItemId) counter FROM Attac

SQL查询:

SELECT
    M.MailItemId, m.Subject,
    ISNULL(m.SendCC, ''),
    ISNULL(attachments.counter, 0) Counters,
    M.CreationDate 
FROM
    MailItem AS M 
LEFT OUTER JOIN
    (SELECT 
         MailItemId, COUNT(MailItemId) counter 
     FROM Attachment Group By MailItemId) AS attachments ON M.MailItemId = attachments.MailItemId
有两种型号
MailItem
Attachment
。希望根据上述条件获取数据


我想将上面的查询转换为lambda表达式。

在不知道实体模型是什么样子的情况下,这需要很多假设,主要是存在一个导航属性
Attachments
,该属性定义
MailItem
Attachment
之间的一对多关系。但假设它确实存在,您应该能够做一些简单的事情,如:

_context.MailItems.Select(mi => new {
    MailItemId = mi.MailItemId,
    Subject = mi.Subject,
    Subject = mi.SendCC,
    Counters = mi.Attachments.Count,
    CreationDate  = mi.CreationDate 
});

Lambda-不是“Lambda”…请添加您的实体,您尝试过的代码以及不适用于您的代码。@stickt01 MailItemId是MailItem表中的主键,也是附件表中的外键。当然@Kida-因此通常您的
MaiItem
模型将具有类似
公共虚拟IEnumerable Attachments
的属性,而
Attachment
将具有
公共虚拟邮件项目MailItem
。然后,通常会在映射文件中使用这些导航属性来定义外键关系。虽然这是假设先编写代码,但由于大部分内容都没有看到您的模型,因此几乎不可能构造表达式。@stickt01-否。MailItem和Attachment是两个不同的模型。它们都具有MailItemId属性。是的,我知道@Kida但是导航属性可以使生成的查询与您非常想要的查询类似更容易的。看见