如何使用c#从数据表中随机获取唯一记录?

时间:2013-01-31 04:20:11

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

每一个人,我正在开发一个小应用程序,所有问题都随机出现。

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

我正在使用以下方法获取随机记录......

 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();

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

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:-3)

您需要保留相同的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