【问题标题】:Creating an IDictionary<string,Expression> proving difficult创建一个 IDictionary<string,Expression> 证明很困难
【发布时间】:2011-07-19 22:17:27
【问题描述】:

我想制作一个名为 LINQ 表达式的字典,因为我无法将表达式存储在我的数据库中。我将存储所需表达式的名称,以及结构化的IList&lt;T&gt;,其中T 是可以存储在数据库中的参数类型。

但它并没有按照我想要的方式工作......我有以下布局。这不是一个真正的表达式,我现在只是想编译一些东西..

public static class Evaluations {
        public static Dictionary<string, Expression> Expressions = new Dictionary<string, Expression> {
            {
                "First Expression",
                new Expression<Func<int, int, int>> =
                    (current, next) => (current + next)
            }
        };
    }

但是有人告诉我……嗯,几乎没有。编译器错误没有意义。简单地说

这不是变量

如何安全地将System.Linq.Expressions.Expression 添加为IDictionary&lt;string, Expression&gt;Value?有什么建议吗?

【问题讨论】:

  • 你确定需要表达吗?如果你不需要 Linq.Expression 的东西,你可以只使用 Func

标签: linq


【解决方案1】:

这不是一个有效的表达式:

new Expression<Func<int, int, int>> =
                (current, next) => (current + next)

你想给什么赋值?

我想你的意思是:

(Expression<Func<int, int, int>>)((current, next) => current + next)

这编译得很好:

public static Dictionary<string, Expression> Expressions = 
    new Dictionary<string, Expression> {
    {
        "First Expression",
            (Expression<Func<int, int, int>>)((current, next) => current + next)
    }
};

【讨论】:

  • 是的,是表达式部分的装箱对我不起作用。谢谢。
  • @Ciel:没有进行拳击,现在仍然没有......这只是导致您出现问题的语法。
猜你喜欢
  • 2022-06-22
  • 2023-01-09
  • 1970-01-01
  • 1970-01-01
  • 2018-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-16
相关资源
最近更新 更多