获取datatable上的随机行

时间:2017-09-21 09:54:55

标签: c# random

我想在C#中的dataTable上随机获取05行,信息如下:

enter image description here

我一直使用Clone属于其他dt的解决方案并使用Random函数进行处理但无法成功。请帮忙告诉我解决这个问题。

非常感谢你。

3 个答案:

答案 0 :(得分:1)

由于您没有显示您的代码,我们无法修复它,但是:

Random r = new Random();
var rowsTaken = new HashSet<int>();
DataTable rndTable = yourDataTable.Clone();
for(int i = 0; i < 5; i++)
{
    int rndRowIndex = r.Next(yourDataTable.Rows.Count);
    while(!rowsTaken.Add(rndRowIndex))
        rndRowIndex = r.Next(yourDataTable.Rows.Count);
    DataRow randomRow = yourDataTable.Rows[rndRowIndex];
    rndTable.ImportRow(randomRow);
}

答案 1 :(得分:0)

你可以在0和行数之间取一个随机数,然后在这样的结果之间进行两次相同的数字。

DataTable dt = new DataTable()
Random rnd = new Random();

int row1= rnd.Next(0, dt.Count); 
int row2= rnd.Next(0, row1-1);    
int row3= rnd.Next(row2+1,row1-1);     
....

答案 2 :(得分:0)

你可以

dataTable.OrderBy(x => Guid.NewGuid()).Take(5)

var random = new Random();

dataTable.OrderBy(x => random.Next()).Take(5)