【问题标题】:Disable a string in array to prevent duplicates禁用数组中的字符串以防止重复
【发布时间】:2016-09-12 12:55:07
【问题描述】:

我有这个应用程序,我必须在textbox 中插入与array 中相同的stringstrings 来自一个标签,对于每个答案,它将转到数组中的一个随机单词/字符串。

我的问题是:有什么方法可以在array 中使用deletedisable 一个单词/字符串,这样我就不会得到任何重复项?

string[] arrProvincies = File.ReadAllLines(@"provincies.txt");

int counter = 0;
string Array = "";

string Array = arrProvincies[counter].ToString();
lblProvincie.Text = Array;
counter = rnd.Next(0, 12);

【问题讨论】:

  • 只需致电var provinces=arrProvincies.Distinct() 即可获得不同的条目
  • Prevent duplicatesrandom selection without repetition 不同。你到底想要什么?
  • 我不想多次使用相同的字符串。
  • @Tuur 你正在寻找 shuffle,从原始列表中生成随机顺序。

标签: c# arrays


【解决方案1】:

您可以使用Queue

Queue<string> arrProvincies = new Queue<string>(File.ReadAllLines(@"provincies.txt"));

并与lblProvincie.Text = arrProvincies.Dequeue();一起使用

因此,您将确保没有重复,因为您在使用时删除了条目。


如果你需要洗牌:

Queue<string> arrProvincies = new Queue<string>(File.ReadAllLines(@"provincies.txt").OrderBy(o => Guid.NewGuid()));

【讨论】:

  • OP 正在尝试随机检索条目。在加载到队列中之前应该对行进行洗牌
  • @PanagiotisKanavos true,添加信息。
  • @Tuur 用我的替换 arrProcincies 的声明
  • 唯一的问题是,它每次都会按照相同的顺序进行,它可能会被洗牌,但每次都保持不变
  • 我认为你想要Guid.NewGuid() 而不是new Guid(),因为这会给你随机的Guids 而不仅仅是Guid.Empty
【解决方案2】:
string[] arrProvincies = File.ReadAllLines(@"provincies.txt");

var randomProvincies = arrProvincies.Distinct().OrderBy(i => Guid.NewGuid());

randomProvincies 将是随机排序的不同值(我无法理解它说您将在文本框中插入相同字符串的部分)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-19
    • 2013-10-21
    • 2021-03-19
    • 1970-01-01
    • 2021-03-13
    • 2020-03-20
    相关资源
    最近更新 更多