C# 如何将谓词表达式转换为SQLWHERE子句

C# 如何将谓词表达式转换为SQLWHERE子句,c#,upsert,ef-core-2.1,C#,Upsert,Ef Core 2.1,我在应用程序中使用EF Core。但是,我在应用程序中有一部分非常需要使用SQLMERGE语句,关于一个名为FlexLabs.Upsert的项目,我想创建某种Upsert扩展,它将生成一个MERGE语句 但是,与FlexLabs.Upsert项目不同,FlexLabs.Upsert项目中的ON子句只是作为属性等式列表创建的,我需要能够传入一个更复杂的谓词,如下所示: DbContext.Upsert(个人) .On((原始,比较)=>{ 返回(original.AgencyId==compare

我在应用程序中使用EF Core。但是,我在应用程序中有一部分非常需要使用SQL
MERGE
语句,关于一个名为FlexLabs.Upsert的项目,我想创建某种
Upsert
扩展,它将生成一个
MERGE
语句

但是,与FlexLabs.Upsert项目不同,FlexLabs.Upsert项目中的
ON
子句只是作为属性等式列表创建的,我需要能够传入一个更复杂的谓词,如下所示:

DbContext.Upsert(个人)
.On((原始,比较)=>{
返回(original.AgencyId==compare.AgencyId
&&original.AgencyReferenceId==compare.AgencyReferenceId)
||
(original.SSN==compare.SSN)
||
(original.Firstname==compare.Firstname
&&原始.Lastname==比较.Lastname
&&原始.Birthdate==比较.Birthdate)
})
.UpdateColumns(…)
.RunAsync();
如果没有更好的选项,我知道EntityFramework中的某些东西能够接受谓词并创建SQL
WHERE
子句。有没有办法将
WHERE
子句生成一个字符串,然后用
上的
替换
WHERE


有人能帮我弄清楚如何生成该子句,或者告诉我EF团队实际生成
where
子句的代码吗?

你能不能让你的方法签名接受
Func
方法上的
签名是什么?您能不能让您的方法签名接受
Func
方法上的
签名是什么?