c# - 如何在 C# 中聚合 order by?
问题描述
所以我有一个像下面这样的函数,它接收一个对象列表并将它们包含在我的查询字符串中。这很好用。
query = includeExpressions.Aggregate(query, (current, include) => current.Include(include));
但我想要做的是也聚合 OrderBys。这是我遇到问题的地方。我遇到的问题是必须使用OrderBy然后在同一行上使用ThenBy 。我尝试使用 for 循环第一项使用顺序,然后使用 thenby。我遇到的问题是,为了激活 thenby,order by 需要在同一对象行上进行。
query.OrderBy(orderBy).ThenBy
我不能做
var usedOrderBy = true;
foreach (var orderBy in orderBys)
{
if (usedOrderBy)
{
query = query.OrderBy(orderBy);
usedOrderBy = true;
}
else
{
query = query.ThenBy(orderBy); // <-- Can not locate thenby
}
}
any ides.
我想像
orderItems(x => x.Item1, x => x.Item2)
解决方案
问题在于query
变量的类型。ThenBy
是可以应用的扩展方法,System.Linq.IOrderedEnumerable<TSource>
所以System.Linq.IOrderedQueryable<TSource>
你不能只做
IEnumerable<Point> points = GetPoints();
points = points.OrderBy(p => p.X);
points = points.ThenBy(p => p.Y);
您应该有一个额外的变量用于预排序结果来解决您的场景,如下例所示:
IEnumerable<Point> points = GetPoints();
var orderedPoints = points.OrderBy(p => p.X);
orderedPoints = orderedPoints.ThenBy(p => p.Y);
推荐阅读
- c - C程序发生数据丢失
- python - 如何使用python获取(解析)Json嵌套字符串(来自API)数据,如对象
- haskell - 除非以管理员身份运行,否则堆栈 ghci 无法加载 pthread
- python - AMD plaidml 与 CPU Tensorflow - 意外结果
- java - n 个元素的时间复杂度
- oracle - 单击经典报告图标时如何获取列表项
- r - 在 R 包中构建 RocksDB 静态库
- flutter - 手势检测器没有检测到视频播放器屏幕,因为我把视频播放器是它的孩子
- css - CSS 网格:使用纯 CSS(媒体查询)对列数进行动画转换
- db2 - 云上的 DB2 帐户重新激活不起作用