且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

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

更新时间:2022-12-15 14:57:24

正如其他人所说,您可以使用 Enumerable.Range(int, int) 生成返回为 IEnumerable.

As the others have said, you can use Enumerable.Range(int, int) to generate a sequence of integers returned as IEnumerable<int>.

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

And while you can convert the result to a List<int> in the various ways that have been suggested already, you should only do that if you actually need a List<T>.

在这种情况下,没有必要这样做.你的函数可以改写如下:

In this case, there is no need to do so. Your function could be rewritten as follows:

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 时,所有值必须同时保存在内存中.

This is more efficient since the sequence returned by Enumerable.Range is generated "lazily" as it is enumerated. On the other hand, when the sequence is converted to a List<int> then all of the values must be held in memory at once.