linq C#输出整表

ljo96ir5  于 2022-12-15  发布在  C#
关注(0)|答案(2)|浏览(234)

在python语言中,我可以很容易地做到这一点,输出是整个列表:

import random
list = [random.randrange(150) for i in range(10)]
print(list)

我可以用C#语言做这件事而不用像这样的循环吗?因为输出分离了我的列表元素。

List<int> list = new List<int> ();
Random rnd = new Random();
for (int i = 0; i < 10; i++){
list.Add(rnd.Next (150));
}
for(int i = 0; i < list.Count; i++){
Console.WriteLine(list[i]);
}
s3fp2yjn

s3fp2yjn1#

如果你愿意的话,我们也可以在一行代码中完成。这段代码也是线程安全的,但是由于使用了Random.Shared,所以需要.NET 6.0或更高版本。

Console.WriteLine(string.Join(",", Enumerable.Range(0, 10).Select(_ => Random.Shared.Next(150))));

这将生成一个包含0到149的随机整数的IEnumerable<int>,然后将它们写入Console,中间用逗号分隔。

euoag5mw

euoag5mw2#

据我所知,.NET中没有生成随机整数列表的方法,但为什么不自己写呢?例如:

public static class MyEnumerable
{
    public static IEnumerable<int> RandomEnumerable(int maxValue, int count, Random random = default)
    {
        if (count < 0)
        {
            throw new ArgumentOutOfRangeException(nameof(count));
        }

        if (maxValue < 0)
        {
            throw new ArgumentOutOfRangeException(nameof(maxValue));
        }

        random ??= Random.Shared;

        for (int i = 0; i < count; i++)
        {
            yield return random.Next(maxValue);
        }
    }
}

现在你可以像在phyton中那样在两行中完成你的任务:

var randomList = MyEnumerable.RandomEnumerable(150, 10).ToList();
Console.WriteLine($"[{string.Join(", ", randomList)}]");

相关问题