C# 从BlToolkit LINQ中提取表达式,以便对其进行编译

C# 从BlToolkit LINQ中提取表达式,以便对其进行编译,c#,linq,expression,bltoolkit,C#,Linq,Expression,Bltoolkit,我正在尝试提取此表达式: t => t.DayEnd == s.DayEnd && t.DayStart == s.DayStart 输入名为表达式的外部变量 我希望它以某种方式提取它,这样我就可以在下一个BlToolkit LINQ查询中使用这个变量 private void InsertOrUpdate(IQueryable<CccPricingPricedDays> source, Table<CccPricingPricedDays> ta

我正在尝试提取此表达式:

t => t.DayEnd == s.DayEnd && t.DayStart == s.DayStart
输入名为表达式的外部变量

我希望它以某种方式提取它,这样我就可以在下一个BlToolkit LINQ查询中使用这个变量

private void InsertOrUpdate(IQueryable<CccPricingPricedDays> source, Table<CccPricingPricedDays> target)
    {
        Expression<Func<CccPricingPricedDays,CccPricingPricedDays, bool>> expression = (s,t) => t.DayEnd == s.DayEnd && t.DayStart == s.DayStart;

        //doplneni chybejicich
        source.Where(s => !target.Any(t => t.DayEnd == s.DayEnd && t.DayStart == s.DayStart))
              .Insert(target, table => table);
    }
private void InsertOrUpdate(IQueryable源、表目标)
{
表达式=(s,t)=>t.DayEnd==s.DayEnd&&t.DayStart==s.DayStart;
//多普尔尼尼·齐贝吉奇
source.Where(s=>!target.Any(t=>t.DayEnd==s.DayEnd&&t.DayStart==s.DayStart))
.插入(目标,表=>表);
}

我可以找到一种方法来插入变量,以便对其进行编译。

如果您想在Linq中重用表达式,您可能需要看看。它进入表达式内部,并在sql转换之前用其内容替换所有函数调用

例如:

private void InsertOrUpdate(IQueryable源、表目标)
{
表达式=(s,t)=>t.DayEnd==s.DayEnd&&t.DayStart==s.DayStart;
来源
.AsExpandable()
.Where(s=>!target.Any(t=>表达式(s,t)))
.插入(目标,表=>表);
}

您计划如何使用该表达式?你不能将它用作
IQueryable。Where
谓词。你能确切地告诉我怎么做吗?我不知道如何提取这个。。我的目标是将谓词作为参数发送给方法,以便它可以在代码的不同部分中多次使用