是否有可能创建一个具有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);
我知道这是完全垃圾,但是任何其他解决方案(例如,需要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)
有没有办法实现我想要的?
最佳答案
要从选择器中选择两个属性,可以使用匿名类型(如果您不喜欢Tuple
的语法):
x => new { x.Property1, x.Property };
如果这在上下文中不可行(通常是因为类型需要在定义的范围之外使用),则当您希望选择多个值时,应该只创建命名类型以从选择器中进行选择。
关于c# - 具有2个输出值的Func <>,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25997853/