0

我试图提取这个表达式:

t => t.DayEnd == s.DayEnd && t.DayStart == s.DayStart

进入名为expression的外部变量。

我希望它以某种方式提取它,以便我可以在下一个 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);
    }

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

4

1 回答 1

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);
}
于 2014-05-22T17:59:22.463 回答