我有一个对象的集合,按对象的字段值进行排序。目前的问题是订单取决于业务逻辑。LINQ委托代序
public enum Order : byte {
a = 1,
b = 2,
c = 3
}
public class Foo{
public long A {get;set;}
public long B {get;set;}
public long C {get;set;}
}
public class Worker(){
private Foo[] orderFoos(Foo[] foos, Func<Order, long> sort){
return foos.OrderByDescending(f => sort(f)).ToArray(foos.Length);
}
public void Work(){
Foo[] foos = getFoos();
var orderByA = orderFoos(foos, f => f.A);
var orderByB = orderFoos(foos, f => f.B);
var orderByC = orderFoos(foos, f => f.C);
}
}
编译器会报错Argument 1: cannot convert from 'Foo' to 'Order'
。是否有任何解决方法或解决方案?
不'Foo.A','Foo.B'和'Foo.C'持有什么样的价值观? – NtFreX
@NFFRX'''long''',它在Foo类声明中提及。 – Max
我知道什么值,而不是什么类型。我问,因为我不明白你想做什么。 – NtFreX