gpt4 book ai didi

c# - 有没有办法使用 LINQ 表达式填充集合?

转载 作者:行者123 更新时间:2023-11-30 13:42:46 26 4
gpt4 key购买 nike

LINQ 的一大优点是允许您获取与集合相关的信息,而无需手动编写代码来遍历集合。 有没有办法使用 LINQ 填充集合,从而避免编写循环?


例如,假设我有以下代码,它适用于从 1 到 10 的数字范围:

public static void LinqTest()
{
List<int> intList = new List<int>();
for (int i = 1; i <= 10; i++) // <==== I'm having to use a for loop
intList.Add(i); // here to populate the List.
int intSum = intList.Sum();
int intSumOdds = intList.Where(x => x % 2 == 1).Sum();
double intAverage = intList.Average();
Console.WriteLine("Sum is {0}\tSum of Odds is {1}\tAverage is {2}",
intSum, intSumOdds, intAverage);
}

LINQ 已经取代了for 循环,检索 数据信息所需的循环。我很好奇 LINQ 是否可以用来替换 populates 数据的 for 循环。有没有办法用LINQ来代替下面两行代码?

    for (int i = 1; i <= 10; i++)
intList.Add(i);

最佳答案

正如其他人所说,您可以使用 Enumerable.Range(int, int)生成返回为 IEnumerable<int> 的整数序列.

虽然您可以将结果转换为 List<int>在已经建议的各种方式中,只有在您确实需要 List<T> 时才应该这样做.

在这种情况下,没有必要这样做。您的函数可以重写如下:

IEnumerable<int> intList = Enumerable.Range(1, 10);
int intSum = intList.Sum();
int intSumOdds = intList.Where(x => x % 2 == 1).Sum();
double intAverage = intList.Average();

由于 Enumerable.Range 返回的序列,这样效率更高在枚举时“延迟”生成。另一方面,当序列转换为 List<int> 时那么所有的值都必须立即保存在内存中。

关于c# - 有没有办法使用 LINQ 表达式填充集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2032411/

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