如何在一个DataTable表格中随机删除一行数据 生成随机数会吗?使用random类,生成一个从0到行数-1的随机数,表示从哪行移走再生成一个,表示插入哪里 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Random rd = new Random(); int row1; row1 = rd.Next(0, dtable.Rows.Count); Random rd = new Random(); int row1; row1 = rd.Next(0, dt.Rows.Count); dt.Rows.InsertAt(dt.Rows[row1], row1); 随机打乱顺序而已..var NewDt=dt.AsEnumerable().OrderBy(d => Guid.NewGuid()).CopyToDataTable(); Quote: 引用 6 楼 Z65443344 的回复:其实就是加一个"行号"列,然后里面填充随机数,然后根据行号做个排序[/qu嗯,这种方法我明白了但是数据太多的话 计算量太大了。。可否这样:我先随机产生两个随机数M,N,然后复制第M行数据,然后再将M行数据删除,将这行数据插入到产生的第N行的位置。。插入的函数是哪个?? 数据很大?试试这个dt.AsEnumerable().AsParallel().OrderBy(d => Guid.NewGuid()).CopyToDataTable(); 删除是remove插入是insertAt Random rd = new Random(); int row1,row2;//,row3,row4; row1 = rd.Next(0, dtable.Rows.Count-1); row2 = rd.Next(0, dtable.Rows.Count-1); DataRow r1 = dtable.NewRow(); if (row1 != row2) { r1.ItemArray = dtable.Rows[row1].ItemArray; dtable.Rows.Remove(row1); dtable.Rows.InsertAt(r1, row2); }这样写有问题吗???会出现报错。错误 无法从“int”转换为“System.Data.DataRow”???如何更改?? Random rd = new Random(); int row1,row2;//,row3,row4; row1 = rd.Next(0, dtable.Rows.Count-1); row2 = rd.Next(0, dtable.Rows.Count-1); DataRow r1 = dtable.NewRow(); if (row1 != row2) { r1.ItemArray = dtable.Rows[row1].ItemArray; dtable.Rows.Remove(row1); dtable.Rows.InsertAt(r1, row2); }这样写有问题吗???会出现报错。错误 无法从“int”转换为“System.Data.DataRow”???如何更改?? DataTable dt = new DataTable(""); dt.Columns.Add("id", typeof(int)); dt.Columns.Add("name", typeof(string)); dt.Rows.Add(1, "小明111"); dt.Rows.Add(2, "小明222"); dt.Rows.Add(3, "小明333"); dt.Rows.Add(4, "小明444"); for (int i = 0; i < dt.Rows.Count; i++) { Console.WriteLine(dt.Rows[i][0].ToString() +"__"+ dt.Rows[i][1].ToString()); } DataTable newDt = dt.AsEnumerable().AsParallel().OrderBy(d => Guid.NewGuid()).CopyToDataTable(); for (int i = 0; i < newDt.Rows.Count; i++) { Console.WriteLine(newDt.Rows[i][0].ToString() + "__" + newDt.Rows[i][1].ToString()); }因为我看到你说把随机的一行 扔到随机的位置..我个人理解的话 就是把表格打乱了 不知道我理解的对不对..当然我这是全部,而你只要一个 是吗? DataRow dr=dtable.NewRow();for(int i=0;i<dtable.Columns.Count;i++){dr[i]=dtable.Rows[row1][i];}dtable.Rows.Remove(row1);dtable.Rows.InsertAt(row2, dr); row1,row2是int类型应该用dtable.Rows.RemoveAt(row1); C#串口通信 数据解析 DataGridView问题 ESC指令的使用 自定义属性 超郁闷,哭求高手指点 C# 非零数组求助 c# listbox使用 smartphone 2003 不支持button,radiobutton等控件吗? 树型结构删除一个结点以后不自动刷新,该怎么解决? 怎么写C#实体类? 如何给动态对象dynamic 动态赋值? winform程序 DataGridView插行删行问题
int row1;
row1 = rd.Next(0, dtable.Rows.Count);
Random rd = new Random();
int row1;
row1 = rd.Next(0, dt.Rows.Count);
dt.Rows.InsertAt(dt.Rows[row1], row1);
var NewDt=dt.AsEnumerable().OrderBy(d => Guid.NewGuid()).CopyToDataTable();
dt.AsEnumerable().AsParallel().OrderBy(d => Guid.NewGuid()).CopyToDataTable();
插入是insertAt
int row1,row2;//,row3,row4;
row1 = rd.Next(0, dtable.Rows.Count-1);
row2 = rd.Next(0, dtable.Rows.Count-1);
DataRow r1 = dtable.NewRow();
if (row1 != row2)
{
r1.ItemArray = dtable.Rows[row1].ItemArray;
dtable.Rows.Remove(row1);
dtable.Rows.InsertAt(r1, row2);
}
这样写有问题吗???会出现报错。错误 无法从“int”转换为“System.Data.DataRow”???如何更改??
int row1,row2;//,row3,row4;
row1 = rd.Next(0, dtable.Rows.Count-1);
row2 = rd.Next(0, dtable.Rows.Count-1);
DataRow r1 = dtable.NewRow();
if (row1 != row2)
{
r1.ItemArray = dtable.Rows[row1].ItemArray;
dtable.Rows.Remove(row1);
dtable.Rows.InsertAt(r1, row2);
}
这样写有问题吗???会出现报错。错误 无法从“int”转换为“System.Data.DataRow”???如何更改??
DataTable dt = new DataTable("");
dt.Columns.Add("id", typeof(int));
dt.Columns.Add("name", typeof(string));
dt.Rows.Add(1, "小明111");
dt.Rows.Add(2, "小明222");
dt.Rows.Add(3, "小明333");
dt.Rows.Add(4, "小明444");
for (int i = 0; i < dt.Rows.Count; i++)
{
Console.WriteLine(dt.Rows[i][0].ToString() +"__"+ dt.Rows[i][1].ToString());
}
DataTable newDt = dt.AsEnumerable().AsParallel().OrderBy(d => Guid.NewGuid()).CopyToDataTable();
for (int i = 0; i < newDt.Rows.Count; i++)
{
Console.WriteLine(newDt.Rows[i][0].ToString() + "__" + newDt.Rows[i][1].ToString());
}因为我看到你说把随机的一行 扔到随机的位置..我个人理解的话 就是把表格打乱了 不知道我理解的对不对..当然我这是全部,而你只要一个 是吗?
for(int i=0;i<dtable.Columns.Count;i++)
{
dr[i]=dtable.Rows[row1][i];
}
dtable.Rows.Remove(row1);
dtable.Rows.InsertAt(row2, dr);
应该用dtable.Rows.RemoveAt(row1);