我正在使用LINQ使用下面的代码获取列表的第n个值
var addMixingEvent
= productionEvent.OrderBy(x => x.StartTime)
.Where((x, i) => i % mixesRequired == 0)
.ToList();
这在一定程度上有效,但我还需要将第一个带回来并添加到我的列表中的项目作为第n个项目。
我已将0更改为mixesRequired,在此实例中,此值为4.
所以本质上我需要每第4个项目,第一个项目是第4个项目。
任何和所有帮助表示赞赏。
由于
西蒙
答案 0 :(得分:1)
在ToList()语句之前使用Skip()方法跳过第一个结果。
您的代码应如下所示:
var addMixingEvent
= productionEvent.OrderBy(x => x.StartTime)
.Where((x, i) => i % mixesRequired == 0)
.Skip(1)
.ToList();
答案 1 :(得分:1)
如果理解正确,你想获得每个第n项,跳过位置0的项目。
如果您订购的商品序列如下:
var orderedItems = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 }
并且您希望每第4个项目跳过位置0的项目,您想要的输出如下:
var filteredItems = { 4, 8, 12 }
如果可以,您可以通过多种方式实现过滤后的输出。 e.g:
var filteredItems = orderedItems.Skip(mixesRequired).Where((x,i) => i % mixesRequired == 0);
或
var filteredItems = orderedItems.Where((x,i) => i > 0 && i % mixesRequired == 0);
或
var filteredItems = orderedItems.Where((x,i) => i % mixesRequired == 0).Skip(1);
不要相信任何这些替代方案比其他方案更明显。在任何情况下,快速分析都可以消除您的疑虑。
希望有所帮助。