使用LINQ填充List

14 浏览
0 Comments

使用LINQ填充List

在Python中,你可以这样做:

arr = list(set(randint(-50, 50) for _ in range(10)))

我知道如何编写一个扩展方法来填充数组、列表或任何你需要的东西,使用随机值。

尽管如此,我觉得这样做很麻烦,我真的很欣赏你在Python中是如何做到的。

虽然我只知道Enumerable.Range,它只能用于生成固定序列,据我所知。

在C#中是否也可以实现这样的功能呢?

0
0 Comments

问题的出现原因:这段代码是想通过LINQ来填充一个List,但是目前的代码只是将0到49的数字按照随机顺序进行排列,并没有将它们添加到List中。

解决方法:根据问题描述,我们可以使用LINQ的Select方法将随机排序的数字添加到List中。具体代码如下:

Random r = new Random();
List ints = Enumerable.Range(0, 50)
                            .OrderBy(i => r.Next())
                            .Select(i => i)
                            .ToList();

这样,就可以使用LINQ来填充List了。

0
0 Comments

问题的原因是Enumerable.Range方法需要两个参数,即起始值和计数值。在给定的代码中,只传入了一个参数,导致编译错误。

解决方法是将代码中的Enumerable.Range(0, 10)修改为Enumerable.Range(0, 0),即将起始值参数设为0。这样就能正确地使用LINQ方法SelectToList来填充List集合。修改后的代码如下:

var r = new Random();
var l = Enumerable.Range(0, 0).Select(x => r.Next(100) - 50).ToList();

通过这样的修改,就能确保代码能够正确编译,并且使用LINQ方法填充List集合。

0
0 Comments

问题的出现原因:原帖中的提问者不知道如何使用LINQ中的Select方法和Enumerable.Range方法一起来填充一个List

解决方法:其他回复者提供了一个解决方案,使用LINQ的Select方法和Enumerable.Range方法来填充List。具体代码如下:

Random rnd = new Random();
List<int> = Enumerable.Range(0,10).Select(n => rnd.Next(-50, 51)).ToList();

这个解决方法被其他回复者认可并赞同。提问者之后也表示对重复数字不关心,如果需要避免重复数字,可以先使用普通的Range方法,然后再对列表进行洗牌。

0