Entity framework 与Lambda表达式斗争(VB.net)

Entity framework 与Lambda表达式斗争(VB.net),entity-framework,lambda,left-join,code-first,linq-expressions,Entity Framework,Lambda,Left Join,Code First,Linq Expressions,我有一件相对简单的事情,我可以在SQL中轻松地完成,但我正试图习惯使用Lambda表达式,这很困难 下面是一个简单的例子。基本上我有两张桌子 tblAction(ActionID、ActionName) tblAudit(试镜、ActionID、删除) tblAudit可能有一个关于tblAction的条目,删除标志设置为1 我所要做的就是选择我们没有删除条目的操作。因此,SQL语句是: Select tblAction.* From tblAction LEFT JOIN tblAudi

我有一件相对简单的事情,我可以在SQL中轻松地完成,但我正试图习惯使用Lambda表达式,这很困难

下面是一个简单的例子。基本上我有两张桌子

  • tblAction(ActionID、ActionName)
  • tblAudit(试镜、ActionID、删除)
tblAudit可能有一个关于tblAction的条目,删除标志设置为1

我所要做的就是选择我们没有删除条目的操作。因此,SQL语句是:

Select tblAction.* 
From tblAction LEFT JOIN tblAudit on tblAction.ActionID=tblAudit.ActionID
where tblAudit.Deleted <> 1
但这实际上是一个内部连接类型的场景,其中要求TBL中的每个条目在TBL中也有一个条目。我首先使用实体框架代码来进行数据库映射。有没有一种方法可以定义映射,让您可以这样做?

您应该添加

公共财产审计作为数据库集

进入动作实体类(以注册这些表之间的关联)

现在你可以写下你的意思:

(来自上下文中的act.Actions而非act.Audits.Any(功能(审核)审核.Deleted)).ToArray

这相当于

Context.Actions.Where(函数(act)Not act.Audits.Any(函数(audit)audit.Deleted)).ToArray


让LINQ解析器来完成繁重的SQL工作。

我不清楚lambda表达式与此有什么关系。也许你是说Razi,检查一下,然后。团体加入将进行外部加入。还有一个导航属性(Action.Audits)。
Context.Actions.Where(Function(act) Context.Audit
.Where(Function(aud) aud.Deleted=False AndAlso aud.ActionID=act.ActionID)).ToList