如何从DataTable中提取10个随机行?

时间:2011-10-18 02:12:14

标签: c#

假设我有一个包含~50行的DataTable(SharePoint中列表中的GetDataTable())。我想保留10个随机行并忘记其余的行。我怎样才能做到这一点?

提前致谢。

3 个答案:

答案 0 :(得分:7)

你可以在DataTable上的行集合上使用Fisher / Yates shuffle(Skeet的implementation),然后选择前10行。

var random10 = dataTable.Rows.OfType<DataRow>().Shuffle(new Random()).Take(10);

答案 1 :(得分:1)

试试这个:

    Random r = new Random();
    while (dt.Rows.Count > 10)
    {
        int j = r.Next(0, dt.Rows.Count);
        dt.Rows.RemoveAt(j);
    }

答案 2 :(得分:0)

DataTable包含Rows的属性DataRowCollection。您可以使用索引访问每个行。

因此,您可以使用Random获取随机数,并从myTable.Rows[myRandomIndex]获取数据。

Random random = new Random();
int randomNumber = random.Next(0, 50);