【问题标题】:How to select a random element from an array如何从数组中选择一个随机元素
【发布时间】:2012-10-22 10:18:47
【问题描述】:

我正在尝试从字符串数组中选择一个随机元素并将其保存在我的数据库中。

OleDbConnection myConnection = new OleDbConnection(connectionString);
myConnection.Open();
string Update = string.Format("UPDATE Ships SET InPort=True");
OleDbCommand myCommandUpdt = new OleDbCommand(Update);
myCommandUpdt.Connection = myConnection;
myCommandUpdt.ExecuteNonQuery();
OleDbDataReader drdrShipsRead = myCommandUpdt.ExecuteReader();

string[] Randominporta = { "True", "False", "False" };
// Testlabel.Text = Convert.ToString(Randominport[randomNumber]);

int iNumber = 1;
while (drdrShipsRead.Read())
{
    int randomNumber = random.Next(0, 3);
    string myAddingQuery = string.Format(" UPDATE Ships SET InPort= " + Convert.ToString(Randominport[randomNumber]) + " WHERE ID= " + iNumber + "");
    OleDbCommand myCommand = new OleDbCommand(myAddingQuery);

   string myCommand.Connectionresult = myConnection;
    myCommand.ExecuteNonQuery();
    iNumber++;
}

它不起作用。

【问题讨论】:

  • 您是否收到任何错误消息?本网站的目的不仅仅是解决问题并且您对给定的解决方案感到满意。下一次,你应该可以自己做。因此,请使用描述性错误(消息)发布您的问题,我们可以向您解释您做错了什么。
  • “我过得最艰难”不是错误信息:请解释您看到的症状。
  • 真的需要看看你的错误信息。

标签: c# arrays random


【解决方案1】:

简单的方法是:

var a = new List<string> { "True", "False", "False" };

int index = random.Next(strings.Count);
var name = a[index];
a.RemoveAt(index);
return name;

【讨论】:

    【解决方案2】:

    感谢@CodesInChaos,我认为问题中的代码通常是正确的,但您没有正确声明您的数组,

    试试,

    var randomImport = new [] { "True", "False", "False" };
    

    这样做会不那么脆弱

    var randomImport = new [] { "True", "False", "False" };
    var randomNumber = random.Next(0, randomImport.Length);
    

    或者,

    var randomNumber = random.Next(
        randomImport.GetLowerBound(0),
        randomImport.GetUpperBound(0) + 1);
    

    【讨论】:

    • "maxValue 返回的随机数的唯一上界。"
    • 仍然无法工作:(它正在运行但没有修改数据库
    • @MoeiiYounes,关于数据库操作的问题中没有代码。
    【解决方案3】:

    随着 Jodrell 的回答,您应该修改下面的行以包含 SET InPort 值的引号。

        string myAddingQuery = string.Format(" UPDATE Ships SET InPort= '" + Convert.ToString(Randominport[randomNumber]) + "' WHERE ID= " + iNumber + "");
    

    【讨论】:

    • 我从问题中删除了 SQL 位,因为这实际上是一个单独的问题 - 抱歉。
    • 没有错误信息。它运行但不修改数据库。
    • @tomfanning 我想,你应该把他的问题按原样留下,因为我可以看到代码的其他部分也可能有问题。
    • @Ramesh 我确实觉得 SQL 部分应该是一个单独的问题,但为了防止混淆,我已经恢复了其余部分。
    猜你喜欢
    • 2014-07-23
    • 1970-01-01
    • 2011-06-30
    • 1970-01-01
    • 2017-05-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多