C# 如何在现有列表中添加相同的编号?

C# 如何在现有列表中添加相同的编号?,c#,winforms,list,C#,Winforms,List,我生成随机数的功能如下: public static List<int> GetRandomNumbers(int count) { HashSet<int> randomNumbers = new HashSet<int>(); Random random = new Random(); for (int i = 0; i < count; i++) { while(!randomNumbers.Add

我生成随机数的功能如下:

public static List<int> GetRandomNumbers(int count)
{
    HashSet<int> randomNumbers = new HashSet<int>();
    Random random = new Random();

    for (int i = 0; i < count; i++)
    {
        while(!randomNumbers.Add(random.Next(100, 999)));
    }

    return randomNumbers.ToList();
}
我想把清单列为:

152 152 582 582 254 254 891 891 421 421
基本上,每个数字都要在列表中添加一次。我该怎么做?(考虑到时间不是问题,如果你能提供一个简单的方法来做这件事,这将是一件好事,也许还有一个更好的方法来节省时间)


谢谢

你的问题不清楚

您可以获取一个包含重复元素的列表(而不是
哈希集
),并将每个重复移动到第一次出现之后,如下所示:

var numbers = Enumerable.Range(1, count).Select(i => random.NextInt(0, 300));
return numbers.GroupBy(i => i).SelectMany(s => s).ToList();
list.SelectMany(o => Enumerable.Repeat(o, 2));
var list2 = new List<int>(list1.Count * 2);
foreach (var n in list1)
{
    list2.Add(n);
    list2.Add(n);
}
您可以使用现有列表,使每个元素重复两次,如下所示:

var numbers = Enumerable.Range(1, count).Select(i => random.NextInt(0, 300));
return numbers.GroupBy(i => i).SelectMany(s => s).ToList();
list.SelectMany(o => Enumerable.Repeat(o, 2));
var list2 = new List<int>(list1.Count * 2);
foreach (var n in list1)
{
    list2.Add(n);
    list2.Add(n);
}

我想你只是想要这样的东西:

var numbers = Enumerable.Range(1, count).Select(i => random.NextInt(0, 300));
return numbers.GroupBy(i => i).SelectMany(s => s).ToList();
list.SelectMany(o => Enumerable.Repeat(o, 2));
var list2 = new List<int>(list1.Count * 2);
foreach (var n in list1)
{
    list2.Add(n);
    list2.Add(n);
}
var list2=新列表(list1.Count*2);
foreach(列表1中的变量n)
{
清单2.添加(n);
清单2.添加(n);
}

这将在列表中循环,并将每个值放入第二个列表中两次。

您可以将函数稍微更改为:

    private static Random random = new Random();
    public static List<int> GetRandomNumbers(int count)
    {
        int value;
        List<int> values = new List<int>();
        HashSet<int> randomNumbers = new HashSet<int>();
        for (int i = 0; i < count; i++)
        {
            while (!randomNumbers.Add(value = random.Next(100, 999)));
            values.Add(value);
            values.Add(value);
        }
        return values;
    }
private static Random=new Random();
公共静态列表GetRandomNumber(整数计数)
{
int值;
列表值=新列表();
HashSet randomNumbers=新HashSet();
for(int i=0;i
我认为您需要如下更改功能:

public static List<int> GetRandomNumbers(int count)
{
    List<int> Result = new List<int>();
    Random random = new Random();

    for (int i = 0; i < count; i++)
    {
        int NewNumber = random.Next(100, 999);

        Result.Add(NewNumber);
        Result.Add(NewNumber);
    }

    return Result;
}
公共静态列表GetRandomNumber(整数计数)
{
列表结果=新列表();
随机=新随机();
for(int i=0;i

我尝试了上面的函数,它就像你说的那样工作。

哈希集的全部要点是唯一的。@SLaks我知道。。。这就是为什么我在函数中使用HashSet来生成数字,因为我以后只需要列表中唯一的数字。但我认为它与我正在尝试做的事情没有任何关系。将
哈希集
更改为
列表
,只需添加两个随机数,但我不确定我的英语是否糟糕,但该函数的工作完全符合我的要求。我在问,一旦我生成了'list'变量,我如何将它们添加到那里?如果可能的话,在这一代人之后:)@user4398763:听起来你想要我的第二个解决方案。我试过了,但由于某种原因似乎不起作用。我在for循环之前添加了它,它似乎没有改变任何东西。我不明白它应该做什么。这将返回一个新的
IEnumerable
。你需要了解林克。我懂了。不幸的是,我不能在这个项目中使用LINQ。有没有替代方案?