c# - 有没有办法将不同的 keySelector 返回给一个 OrderBy?

标签 c# linq lambda

我有一条长长的线,里面有一个 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());

不确定为排序创建类是否更简洁...

您还可以创建不同的方法,根据作为参数获取的枚举对列表进行排序,
我认为这是更清洁的解决方案。

MSDN

关于c# - 有没有办法将不同的 keySelector 返回给一个 OrderBy?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9382295/

相关文章:

c# - 如何在GridView EditTemplate中设置DropDownList的SelectedValue

c# - Azure blob批量删除西里尔字符

c# - 从不同程序集中的类名解析类型

c# - XmlRoot 属性 c#

c++ - 数组的 Lambda 捕获(按值)只是复制指针?

c# - 构建动态 LINQ 表达式时如何检测 IsNull/NotNull?

c# - 使 Linq to Sql 使用 ISNULL 而不是 COALESCE 生成 T-SQL

c# - XML 持续更新值

c# - 无法让 double.TryParse 在 Linq 表达式树中工作

java - 从匿名类到 lambda 表达式