20 个解决方案
#1
生成随机数会吗?
使用random类,生成一个从0到行数-1的随机数,表示从哪行移走
再生成一个,表示插入哪里
使用random类,生成一个从0到行数-1的随机数,表示从哪行移走
再生成一个,表示插入哪里
#2
你可以不删除再插入,直接修改行号即可
#3
能否简单写一下代码,涉及哪几个变量
#4
随机数会,
#5
Random rd = new Random();
int row1;
row1 = rd.Next(0, dtable.Rows.Count);
int row1;
row1 = rd.Next(0, dtable.Rows.Count);
#6
其实就是加一个"行号"列,然后里面填充随机数,然后根据行号做个排序
#7
Random rd = new Random();
int row1;
row1 = rd.Next(0, dt.Rows.Count);
dt.Rows.InsertAt(dt.Rows[row1], row1);
#8
在你的数据源对象中加一个行号属性,根据它自定义排序
#9
随机打乱顺序而已..
var NewDt=dt.AsEnumerable().OrderBy(d => Guid.NewGuid()).CopyToDataTable();
#10
#11
数据很大?
试试这个
试试这个
dt.AsEnumerable().AsParallel().OrderBy(d => Guid.NewGuid()).CopyToDataTable();
#12
删除是remove
插入是insertAt
插入是insertAt
#13
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”???如何更改??
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”???如何更改??
#14
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”???如何更改??
#15
你的好高级,我就会些基本的,慢慢看,看看能看懂么
#16
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());
}
因为我看到你说把随机的一行 扔到随机的位置..我个人理解的话 就是把表格打乱了 不知道我理解的对不对..
当然我这是全部,而你只要一个 是吗?
#17
嗯 我只要随机变动一行的位置。。其他不变。我先看看你的学习学习吧
#18
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”???如何更改??
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);
#19
row1,row2是int类型
应该用dtable.Rows.RemoveAt(row1);
应该用dtable.Rows.RemoveAt(row1);
#20
row1,row2是int类型
应该用dtable.Rows.RemoveAt(row1);
明白了。。谢谢。。
#21
#1
生成随机数会吗?
使用random类,生成一个从0到行数-1的随机数,表示从哪行移走
再生成一个,表示插入哪里
使用random类,生成一个从0到行数-1的随机数,表示从哪行移走
再生成一个,表示插入哪里
#2
你可以不删除再插入,直接修改行号即可
#3
你可以不删除再插入,直接修改行号即可
能否简单写一下代码,涉及哪几个变量
#4
生成随机数会吗?
使用random类,生成一个从0到行数-1的随机数,表示从哪行移走
再生成一个,表示插入哪里
随机数会,
#5
Random rd = new Random();
int row1;
row1 = rd.Next(0, dtable.Rows.Count);
int row1;
row1 = rd.Next(0, dtable.Rows.Count);
#6
其实就是加一个"行号"列,然后里面填充随机数,然后根据行号做个排序
#7
Random rd = new Random();
int row1;
row1 = rd.Next(0, dt.Rows.Count);
dt.Rows.InsertAt(dt.Rows[row1], row1);
#8
在你的数据源对象中加一个行号属性,根据它自定义排序
#9
随机打乱顺序而已..
var NewDt=dt.AsEnumerable().OrderBy(d => Guid.NewGuid()).CopyToDataTable();
#10
其实就是加一个"行号"列,然后里面填充随机数,然后根据行号做个排序[/qu
嗯,这种方法我明白了。。。但是数据太多的话 计算量太大了。。可否这样:我先随机产生两个随机数M,N,然后复制第M行数据,然后再将M行数据删除,将这行数据插入到产生的第N行的位置。。插入的函数是哪个??
#11
数据很大?
试试这个
试试这个
dt.AsEnumerable().AsParallel().OrderBy(d => Guid.NewGuid()).CopyToDataTable();
#12
删除是remove
插入是insertAt
插入是insertAt
#13
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”???如何更改??
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”???如何更改??
#14
删除是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”???如何更改??
#15
数据很大?
试试这个
dt.AsEnumerable().AsParallel().OrderBy(d => Guid.NewGuid()).CopyToDataTable();
你的好高级,我就会些基本的,慢慢看,看看能看懂么
#16
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());
}
1__小明111
2__小明222
3__小明333
4__小明444
2__小明222
3__小明333
1__小明111
4__小明444
说白了,我就是想如何将这行数据随机将其在表格中的位置更换。
因为我看到你说把随机的一行 扔到随机的位置..我个人理解的话 就是把表格打乱了 不知道我理解的对不对..
当然我这是全部,而你只要一个 是吗?
#17
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());
} 1__小明111
2__小明222
3__小明333
4__小明444
2__小明222
3__小明333
1__小明111
4__小明444
说白了,我就是想如何将这行数据随机将其在表格中的位置更换。
因为我看到你说把随机的一行 扔到随机的位置..我个人理解的话 就是把表格打乱了 不知道我理解的对不对..
当然我这是全部,而你只要一个 是吗?
嗯 我只要随机变动一行的位置。。其他不变。我先看看你的学习学习吧
#18
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”???如何更改??
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);
#19
row1,row2是int类型
应该用dtable.Rows.RemoveAt(row1);
应该用dtable.Rows.RemoveAt(row1);
#20
row1,row2是int类型
应该用dtable.Rows.RemoveAt(row1);
明白了。。谢谢。。