sharepoint列表如何进行随机取记录?由于itemid是不连续。可能存在删除添加等操作导致
我们可以采用随机取第几条记录。把记录集合取出来。产生随机第几条数。这里关键是如何产生不重复的随机数
方法如下:
#region//获取随机数/// <summary>/// 获取随机数/// </summary>/// <param name="Number">随机个数</param>/// <param name="minNum">随机的最小数</param>/// <param name="maxNum">随机的最大数</param>/// <returns></returns>public static int[] GetRandomArray(int Number, int minNum, int maxNum){int j;int[] b = new int[Number];Random r = new Random();for (j = 0; j < Number; j++){int i = r.Next(minNum, maxNum + 1);int num = 0;for (int k = 0; k < j; k++){if (b[k] == i){num = num + 1;}}if (num == 0){b[j] = i;}else{j = j - 1;}}return b;}#endregion
//得到最大数int maxRandom = list.Items.Count;//最小1int minRandom = 1;//得到随机数组int[] randArr = GetRandomArray(topNumber, minRandom, maxRandom);//读取SPQuery query = new SPQuery();//过滤后的记录SPListItemCollection listItemCollection = list.GetItems(query);#region//如果有记录if (listItemCollection !=null && listItemCollection.Count>0){//foreach//计数器int i = 1;//得到记录计数器int j = 0;foreach(SPListItem randItem in listItemCollection){#region//若计数器在随机数组里头,如果存在if (((IList)randArr).Contains(i)){//取记录//******************读取id,工号,姓名,图片url,EmployeeEntity randentity = new EmployeeEntity();//randentity.ItemID = randItem["ID"] == null ? string.Empty :randItem["ID"].ToString();//工号randentity.EmployeeNO = randItem["EmployeeNO"] == null ? string.Empty :randItem["EmployeeNO"].ToString();//姓名randentity.EmployeeName = randItem["EmployeeName"] == null ? string.Empty :randItem["EmployeeName"].ToString();//*****************图片url//result.Add(randentity);//计数器+1j++;}//如果已经获取50张,则退出循环if(j == topNumber){break;}//计数器+1i++;#endregion}}#endregion
原文:http://www.cnblogs.com/love007/p/4083053.html