我有一条长长的线,里面有一个 OrderBy
。这行重复了好几次,只有一点点不同:
OrderBy(m => m.Name)
OrderBy(m => m.CreationTime)
等等
为了可维护性,有没有办法只制作一行,让它调用一些方法,或者使用一些 Action
来返回正确的字段?问题是字段的类型不同。
最佳答案
看看这个方法签名:
public static IOrderedEnumerable OrderBy( this IEnumerable source, Func keySelector, IComparer comparer )
你需要给它IComparer<TKey>
data.OrderBy(x => x, new FooComparer());
data.OrderBy(x => x, new BarComparer());
data.OrderBy(x => x, new BazComparer());
不确定为排序创建类是否更简洁...
您还可以创建不同的方法,根据作为参数获取的枚举对列表进行排序,
我认为这是更清洁的解决方案。
关于c# - 有没有办法将不同的 keySelector 返回给一个 OrderBy?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9382295/