0

我怀疑这比我想象的要简单!

我可以创建一个 Func 列表,然后添加到它

var x = new List<Func<IBQCustomer, string>>();
x.Add(c => c.FullName);

Bu 如何在 Func 中添加一个额外的参数?当我尝试时出现错误

var y = new List<Func<IBQCustomer, OrderByDirection, string>>();
y.Add(...);

这可能吗?

我的目标是建立一个属性列表以及如何处理它们


错误:

y.Add(c => c.FullName, OrderByDirection.Asc);
No overload for Add that takes 2 arguments
4

2 回答 2

3

您可以声明一个具有多个参数的匿名委托,如下所示:

y.Add((customer, direction) => customer.FullName);

然后它会工作。无论调用列表中的每个委托,都必须提供两个参数,IBQCustomer并且OrderByDirection.

于 2012-11-08T05:38:05.333 回答
0

'OrderByDirection' 枚举不是函数参数吗?在这种情况下,您可以使用类似的东西:

var y = new List<Tuple<Func<IBQCustomer, string>, OrderByDirection>>();
y.Add(new Tuple<Func<IBQCustomer, string>, OrderByDirection>(c => c.FullName, OrderByDirection.Asc));

当然,您也可以使用自定义类而不是 'Tuple<>':

class MyClass
{
    public Func<IBQCustomer, string> Function;
    public OrderByDirection Direction;
}

或者你可能写错了 lambda 表达式?这应该有效:

var y = new List<Func<IBQCustomer, OrderByDirection, string>>();
y.Add((c, d) => c.FullName);
于 2012-11-08T05:37:46.397 回答