【发布时间】:2015-12-31 20:16:19
【问题描述】:
如何将optionObject.Forms.First(f => f.FormId == formId).MultipleIteration 中的 lambda 表达式写入 Func,所以最后我有类似的东西
Func<FormObject, bool> FormID = f => f.formID == passedVal;
然后在第一个表达式上使用它来得到类似的东西
optionObject.Forms.First(FormID).MultipleIteration
我试过了
Func<FormObject, PassedVal, bool> FormID => formID == PassedVal;
但是没有用。
请注意 lambda 表达式没有任何问题,它可以正常工作。我只是想创建一个函数,将表达式替换为函数的名称,以使代码看起来更短且可维护。
【问题讨论】:
-
没有关注,你能更详细地解释你的问题吗?
-
是的,这就像上面的 LINQ 链接的重用,只是在这种情况下要比较的值不是硬编码的,而是传递给使用表达式的方法的参数跨度>
-
您的
Func<FormObject, PassedVal, bool>不起作用的原因是First和类似方法采用的lambda 签名需要Func<FormObject, bool>。由于您还想参数化另一个值,因此 31eee384 的答案看起来是最好的,也可能是唯一的方法。