是否有可能创建一个具有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/

10-10 09:23