gpt4 book ai didi

c# - 为列表 c# 中的特定索引应用 lambda 表达式

转载 作者:太空狗 更新时间:2023-10-30 00:31:25 25 4
gpt4 key购买 nike

我是 lambda 表达式的新手,我无法将涉及循环内列表索引的代码部分转换为等效的 lambda 表达式。

示例 1:在一个列表中使用不同的索引

List<double> newList = new List<double>();
for (int i = 0; i < list.Count - 1; ++i)
{
newList.Add(list[i] / list[i + 1]);
}

示例 2: 使用来自两个列表的索引

double result = 0;
for (int i = 0; i < list1.Count; ++i)
{
result += f(list1[i]) * g(list2[i]);
}

如何编写等效的 lambda 表达式?

最佳答案

lambda 表达式看起来像 {params} => {body},其中特征符号是 =>“映射到”。您要求的内容通常称为 LINQ query 表达式,有两种样式:

  • 查询的功能风格通常是对 LINQ 扩展方法的一系列链式调用,例如 SelectWhereTake,或 ToList。这是我在下面的示例中使用的样式,也是更为普遍的样式(根据我的经验)。

  • “语言集成” 样式 (*) 使用内置的 C# 关键字,编译器将为您转换为函数式样式。例如:

    var query = from employee in employeeList
    where employee.ManagerId == 17
    select employee.Name;

    | compiler
    v rewrite

    var query = employeeList
    .Where(employee => employee.ManagerId == 17)
    .Select(employee => employee.Name);

示例 1:

var newList = Enumerable.Range(0, list.Count - 1)
.Select(i => list[i] / list[i + 1])
.ToList();

示例 2:

var result = Enumerable.Zip(list1.Select(f), list2.Select(g), (a, b) => a * b).Sum();

(*) 我不确定这是它的正式名称。如果您知道,请用正确的名称更正我。

关于c# - 为列表 c# 中的特定索引应用 lambda 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26343350/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com