如何创建一个Func列表<t1,t2,=“”out =“”t3 =“”> </t1,>

时间:2012-11-08 05:26:28

标签: c# linq lambda

我怀疑这比我想的更简单!

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

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

如何在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

2 个答案:

答案 0 :(得分:3)

您可以使用以下多个参数声明匿名委托:

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

然后它会工作。无论调用列表中的每个代理是什么,都必须提供两个参数IBQCustomerOrderByDirection

答案 1 :(得分: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&lt;&gt;':

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);