我试图提取这个表达式:
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);
}
我可以找到一种方法来插入变量,以便编译它。
答案 0 :(得分:0)
如果要在Linq中重用表达式,可能需要查看LinqKit。它遍历表达式并在sql转换之前用其内容替换所有函数调用。
例如:
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;
source
.AsExpandable()
.Where(s => !target.Any(t => expression(s, t)))
.Insert(target, table => table);
}