1. if you are using SQL Server, just do it on the database side, for example
select top 10 * from yourtable .... order by NewID()
2. if you insist to do it in the code, try something like,
DataTable dt; //your data
int nCount = 10;
DataTable dt2;
if (dt.Rows.Count > nCount)
{
int[] indexlist = new int[dt.Rows.Count];
for (int i=0; i < indexlist.Length; i++)
indexlist[i] = i;
Random r = new Random();
int nlast = indexlist.Length - 1;
for (int i=0; i < nCount; i++)
{
int ri = r.Next(0,nlast+1);
int ntemp = indexlist[ri];
indexlist[ri] = indexlist[nlast];
indexlist[nlast] = ntemp;
nlast--;
}
//create a clone
dt2 = dt.Clone();
for (int i=0; i < nCount; i++)
{
dt2.ImportRow(dt.Rows[indexlist[indexlist.Length - i - 1]]);
}
}
else
dt2 = dt;
//bind your data to the datagrid
DataGrid1.DataSource = dt2.DefaultView;
....