迭代地构建和分配Lambda表达式

时间:2017-08-16 13:07:17

标签: c# linq lambda

请考虑以下事项:

var Constraints = new NonlinearConstraint[2*nVars];

var Constraints = new[] {
    new NonlinearConstraint(nVars, x => x[0] >= 0),
    new NonlinearConstraint(nVars, x => x[0] <= 1),
    new NonlinearConstraint(nVars, x => x[1] >= 0),
    new NonlinearConstraint(nVars, x => x[1] <= 1),
}; 
// et cetera for all x[i]

我想找到一种方法来为所有x[i]使用for循环构造这个变量;

我无法找到任何适当的文件。我尝试过使用

System.Linq.Expressions.Expression.Lambda<>();

但是我遇到了转换错误代码

非常感谢任何想法或帮助。

1 个答案:

答案 0 :(得分:-1)

你在找这样的东西吗?

Enumerable.Range(0, nVars)
          .SelectMany(i => new[]
                           {
                               new NonlinearConstraint(nVars, x => x[i] >= 0),
                               new NonlinearConstraint(nVars, x => x[i] <= 1),
                           })
          .ToArray();

这会创建一个NonlinearConstraint s数组,从i0每个nVars-1创建两个...

也就是说,您不是迭代地创建 lambda ,而是约束对象数组。每个人都有自己的lambda,当然......