/// <summary>
/// 随机抽取9个有趣的用户
/// </summary>
/// <returns></returns>
public List<UserSetting> GetTopNineUserRandom()
{
//用于存放查询出所有的用户Uid
ArrayList arrays = new ArrayList();
//用于存放随机出的用户Uid
List<int> result = new List<int>(9);
List<UserSetting> userSettings = new List<UserSetting>();
//执行指定的存储过程返回DataSet
DataSet ds = DbHelperSQL.RunProcedure("sp_SelectGetAllUserSettings");
DataTable dt = ds.Tables[0];
//循环读取DataTable数据并添加到arrays
for (int i = 0; i < dt.Rows.Count; i++)
{
arrays.Add(dt.Rows[i]["s_Uid"]);
}
Random random = new Random();
//从arrays中随机出9个不重复的用户Uid并添加到result这个数组中
for (int j = 0; j < 9; j++)
{
int uid = Convert.ToInt32(random.Next(0, Convert.ToInt32(arrays[arrays.Count - 1])));
if (arrays.Contains(uid) && !result.Contains(uid))
{
result.Add(uid);
arrays.RemoveAt(arrays.IndexOf(uid));
continue;
}
j--;
}
//循环读取result数组中的值
for (int k = 0; k < result.Count; k++)
{
//将每个值存放到IDataParameter中
IDataParameter[] para = new IDataParameter[] {
new SqlParameter("@s_uid",result[k])
};
//执行指定的存储过程,其中para能获取上循环赋的值
DataSet ds1 = DbHelperSQL.RunProcedure("sp_SelectUserSettingsByUid", para, "userSettings");
//到这里出现问题,能获取上指定的用户uid并且存储过程无任何问题,但是往下走一读取的数据是相同的数据
DataTable dt1 = ds1.Tables[0];
if (dt1.Rows.Count != 1)
{
return null;
}
else
{
UserSetting userSetting = new UserSetting();
//即就是在给userSetting对象赋值是一直赋的是相同的值,请大家帮帮忙!
userSetting.NickName = dt.Rows[0]["nickName"].ToString();
userSetting.S_Uid = Convert.ToInt32(dt.Rows[0]["s_Uid"]);
userSetting.Head = dt.Rows[0]["head"].ToString();
userSettings.Add(userSetting);
}
}
return userSettings;
}
dataTable.Rows[randomSelector.Next(dataTable.Rows.Count)];
//从arrays中随机出9个不重复的用户Uid并添加到result这个数组中
for (int j = 0; j < 9; j++)
{
int uid = Convert.ToInt32(random.Next(0, Convert.ToInt32(arrays[arrays.Count - 1])));
if (arrays.Contains(uid) && !result.Contains(uid))
{
result.Add(uid);
arrays.RemoveAt(arrays.IndexOf(uid));
continue;
}
j--;
}
单步调试 检查你的uid 是否都是想等呢j--;干啥的?
//即就是在给userSetting对象赋值是一直赋的是相同的值,请大家帮帮忙!
userSetting.NickName = dt.Rows[0]["nickName"].ToString();
userSetting.S_Uid = Convert.ToInt32(dt.Rows[0]["s_Uid"]);
userSetting.Head = dt.Rows[0]["head"].ToString();
userSettings.Add(userSetting);
不是dt应该是dt1我发现我越来越二了,这么明显的问题居然没发现!