如何用LINQ按GUID定位列表指定项并获取其后10项
解决方案
你的现有代码仅会筛选出匹配SelectedGirlID的项,无法实现“获取选中项之后10个元素”的需求。要达成目标,需要先定位到匹配项的索引,再从该索引的下一位开始截取元素。
实现步骤
- 找到列表中与目标
girlID匹配的元素索引 - 从该索引的下一个位置开始,截取最多10个元素
修正后的VB代码
Dim AllGirls = db.GetAllGirlsClosestToSelected().ToList() ' 定位选中女孩在列表中的索引 Dim selectedIndex = AllGirls.FindIndex(Function(g) g.girlID = SelectedGirlID) ' 处理找到/未找到匹配项的两种情况,截取目标元素 Dim SelectedGirls = If(selectedIndex <> -1, AllGirls.Skip(selectedIndex + 1).Take(10).ToList(), New List(Of Girl)())
代码说明
FindIndex:返回第一个匹配girlID的元素索引,未找到则返回-1Skip(selectedIndex + 1):跳过选中项及其之前的所有元素,从选中项的下一个元素开始Take(10):截取接下来的最多10个元素,若剩余元素不足10个则返回全部剩余元素- 用
If判断处理未找到匹配项的场景,避免索引越界
内容的提问来源于stack exchange,提问作者michtum
相关产品推荐
相关产品推荐

