c# - 从对象列表中获取 n 个(部分)对象,从 n 个索引开始
问题描述
我有一个 n 个对象的列表。我想从选定的索引开始最多抓取 n 个项目(-n 个以前的项目和 n + 下一个项目)。我想要一种方法,在其中我为列表提供某些参数。
如何在 C# 中实现这一点?
第一个示例:
int selectedIndex = 5
int itemsToTake = 4(2 个上一个和 2 个下一个)
返回列表 = 3-4-5-6-7
第二个示例:
int selectedIndex = 1
int itemsToTake = 4(取 1 个上一个和 3 个下一个,因为列表以 0 开头)
返回列表 = 0-1-2-3-4
我已经尝试过 list.skip().take() 的组合,只是效果不太好。
例子:
nextIndex = nextIndex - prevIndex + 1;
return List.Skip (prevIndex) .Take (nextIndex) .ToList ();
解决方案
Skip + Take 应该可以正常工作,试试这个:
int firstIndex = selectedIndex - itemsToTake / 2;
firstIndex = firstIndex < 0 ? 0 : firstIndex;
return list.Skip(firstIndex).Take(itemsToTake);
推荐阅读
- function - 在同一函数内的其他计算中使用函数返回
- entity-framework-core - EF Core 5 存储和查询字符串数组
- python-3.x - 关于 Python3 时间日期模块的问题
- anylogic - 在 AnyLogic 中将代理类型的参数报告给数据库
- pagination - Jekyll 分页导航到错误的页面
- wordpress - 如何解决按钮对齐问题?
- javascript - 打字稿:如何在此文档中引用另一个文档的字段?
- php - 有没有更好的方法来使用 PHP Parser 删除除 Function_ 节点之外的所有其他代码?
- python - 解析文本文件并转换为 csv
- intellij-idea - intellij:数据库工具工具访问问题