xvd*_*iff 2 c# lambda expression func
是否有可能创建一个具有2个输出值的函数?
我需要一种从对象中获取2个属性的方法,最好是通过表达式,因为易于使用.使用它和查询提供程序来选择多个字段.
protected Expression<Func<T, TProperty1, TProperty2>> Select2Properties { get; set; }
public MyClass(Expression<Func<T, TProperty1, TProperty2>> selector) {
Select2Properties = selector;
}
// desired usage (pseudo)
x => (x.Property1, x.Property);
Run Code Online (Sandbox Code Playgroud)
我知道这是完全垃圾,但任何其他解决方案(例如需要2个表达式属性选择器或需要元组)会导致有时不可读的构造函数调用,尤其是当我需要2个以上的属性时:
x => x.Property1, x => x.Property2, x => x.Property3, x => x.Property4
// or
x => Tuple.Create(x.Property1, x.Property2, x.Property3, x.Property4)
Run Code Online (Sandbox Code Playgroud)
有没有办法实现我想要的?
要从选择器中选择两个属性,您可以使用匿名类型,如果您不喜欢a的语法Tuple
:
x => new { x.Property1, x.Property };
Run Code Online (Sandbox Code Playgroud)
如果在上下文中这是不可行的(通常因为类型需要在定义它的范围之外使用),那么当您希望选择多个值时,您应该只是创建命名类型以从选择器中选择.