使用 Func 查询
本文关键字:查询 Func 使用 | 更新日期: 2023-09-27 18:36:23
我有以下代码段,但 x.PropertyThree 的值为零,尽管我无法弄清楚这段代码是如何工作的来追溯属性被映射的位置。 你能帮忙解释一下这里发生了什么吗? x.PropertyThree 中的 x 从何而来?谢谢
我正在努力的代码
var data = DoSomething(
model,
options,
x => x.KeyDisplayValue,
(x, s) => new List<object>
{
Magic(x.PropertyOne, s),
Magic(x.PropertyTwo, s),
Magic(x.PropertyThree, s),
x.PropertyFour,
x.PropertyFive,
x.NoOperationRate,
});
方法
protected List<List<object>> DoSomething(
MyModel model,
MyOptions options,
Func<TSomething,string> theValue,
Func<TSomething, bool, List<object>> aMethod)
(x, s) => new List<object>
{
Magic(x.PropertyOne, s),
Magic(x.PropertyTwo, s),
Magic(x.PropertyThree, s),
x.PropertyFour,
x.PropertyFive,
x.NoOperationRate,
}
是一个 lambda 表达式,它可以翻译成方法:
public List<object> unnamed(TSomething x, bool s) {
return new List<object>
{
Magic(x.PropertyOne, s),
Magic(x.PropertyTwo, s),
Magic(x.PropertyThree, s),
x.PropertyFour,
x.PropertyFive,
x.NoOperationRate,
};
}
new List<object> { ... }
只是以下方面的快捷方式:
var list = new List<object>();
list.Add(Magic(x.PropertyOne, s));
list.Add(Magic(x.PropertyTwo, s));
...
list.Add(x.NoOperationRate);
方法DoSomething
里面必须是一个代码:
aMethod(something, someBool);
换句话说,您应该查看函数内部DoSomething
找出传递给此长 lambda 的参数。