c# - 如何在 lambda 表达式中访问列表中的下一项
问题描述
我正在创建一个简单的查询(如果这甚至是使用 LINQ 的术语),它将列表中的每个数字添加到索引中,然后从新列表中我想将具有最高索引的值除以该值具有最高索引 - 1,然后对对中的所有索引(索引 val,索引 val-1)执行相同的操作,因此结果将是原始列表一半大小的列表,然后选择最高结果从新列表中。
var lst = new List<int>() { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
var fianle = lst
.Select((value, i) => new { i, value })
.Select(item =>
item.value + item.i)
.Select((x , how to accse the previos item? ) => x/previositem)
.Max(x => x);
所以我想知道
- 如何使用 lambda 表达式向后循环
- 如何使用 lambda 表达式访问列表中的前一项
先感谢您!
解决方案
您可以在匿名对象中拥有一个属性来保存前一个:
var listWithPrevious = lst
.Select((value, i) =>
new {
Index = i,
Value = value,
Previous = lst.ElementAtOrDefault(i + 1)
});
然后使用上面的集合来做任何需要的事情。
您可以将代码修改为:
var fianle = lst
.Select((value, i) =>
new {
Index = i,
Value = value,
Previous = lst.ElementAtOrDefault(i + 1)
})
.Select(item =>
item.value + item.i)
.Select((x , Previous ) => x/Previous)
.Max(x => x);
推荐阅读
- java - 如何查找可能丢失的主队名称?在java项目足球结果生成器中
- django - 为什么我收到 RecursionError?
- django - 如何在 celery 中为每个用户生成队列?
- python-2.7 - 以格式打印类属性
- scala - Scala 构建工具和 Neo4J Http API CORS 错误
- jquery - 如何保存分离的元素并返回?
- python - TensorFlow 2.0 教程问题
- docker - 在 Marathon 和 Mesos 旁边运行 Hadoop
- python - 如何在 python 3.5 及更高版本中将奇数长度的十六进制字符串转换为字节格式?
- forms - 在 ms 访问中提交表单时链接表未更新