C# 获取数据表上的随机行

C# 获取数据表上的随机行,c#,random,C#,Random,我想在C#中随机获得dataTable上的05行,信息如下: 我一直在使用该解决方案克隆属于其他dt并使用随机函数进行处理,但未能成功。请帮助我建议解决这个问题 多谢各位 由于您尚未显示代码,我们无法修复它,但是: Random r = new Random(); var rowsTaken = new HashSet<int>(); DataTable rndTable = yourDataTable.Clone(); for(int i = 0; i < 5; i++)

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

我一直在使用该解决方案克隆属于其他dt并使用随机函数进行处理,但未能成功。请帮助我建议解决这个问题


多谢各位

由于您尚未显示代码,我们无法修复它,但是:

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);
}
Random r=new Random();
var rowsTaken=newhashset();
DataTable rndTable=yourDataTable.Clone();
对于(int i=0;i<5;i++)
{
int rndRowIndex=r.Next(yourDataTable.Rows.Count);
而(!rowsTaken.Add(rndRowIndex))
rndRowIndex=r.Next(yourDataTable.Rows.Count);
DataRow randomRow=yourDataTable.Rows[rndRowIndex];
rndTable.ImportRow(随机行);
}

您可以选择一个介于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);     
....
你能行

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

var random=new random()


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

您尝试了什么,出现了什么问题?获取行数,获取一个介于0和此数字之间的随机数作为id,重复五次。只有在保证连续性的情况下才有效IDs@TimSchmelter我想如上所述从dataTable中随机获取05行,但没有成功。