【问题标题】:how to get unique records from data table randomly using c#?如何使用c#从数据表中随机获取唯一记录?
【发布时间】:2013-01-31 04:20:11
【问题描述】:

大家好,我正在开发一个小应用程序,所有问题都是随机出现的。

我使用默认的random 方法来获取随机数据,但它给出了两次重复的行。所以我需要将不同的行放入数据表中。

我正在使用以下方法来获取 rendom 记录...

 Random rDom = new Random();
 dtRandom = dt.Clone();
 int rw = 0;
 for (int ctr = 1; ctr <= dt.Rows.Count; ctr++)
 {
        rw = rDom.Next(1, dt.Rows.Count);
        dtRandom.ImportRow(dt.Rows[rw]);
 }
 dtRandom.AcceptChanges();

那么,我怎样才能从数据表中获得不同的记录?

【问题讨论】:

标签: asp.net c#-4.0 random datatable row


【解决方案1】:

如您所知,随机数生成可能会多次生成相同的数字。如果存在唯一的代理键/主键,请在将其导入数据表之前检查导入行是否存在。否则,您可以使用这种方法从最终的 DataTable 中获取不同的值:

DataTable distinctTable = new DataView(dtRandom).ToTable(
  true, new string[] { "column1", "column2", "etc." });

来自http://msdn.microsoft.com/en-us/library/wec2b2e6.aspx

【讨论】:

  • 我知道这是一个棘手的想法,并且优化需要更多的间接成本,但事实是它帮助了我,而不是我的项目很小,所以不介意。再次感谢。 !!
【解决方案2】:

您需要保留相同的 Random 对象。
将其作为静态成员放在您的静态方法之外

private static Random rand = new Random();

public static int rInt(int exclUB, int incLB = 0)
{
    int t = rand.Next(incLB, exclUB);
    return t;
}

详情

Random Number Generation - Same Number returned

【讨论】:

    猜你喜欢
    • 2012-04-09
    • 2018-07-20
    • 2012-04-13
    • 2011-01-27
    • 1970-01-01
    • 1970-01-01
    • 2014-08-08
    • 2011-06-30
    • 1970-01-01
    相关资源
    最近更新 更多