随机抽取指定人数的角色,返回角色对应的姓名标记
/// <summary>
        /// 随机抽取指定人数的角色
        /// </summary>
        /// <param name="dwid">单位id</param>
       
        /// <param name="jsmc">角色名称</param>
        /// <param name="cqrs">抽取人数</param>
        /// <returns>随机抽取的姓名标记列表</returns>
        private List<string> jscq(int dwid,string jsmc,int cqrs)
        {
            Random sjs = new Random(DateTime.Now.Year + DateTime.Now.Month + DateTime.Now.Day +
                      DateTime.Now.Hour + DateTime.Now.Minute + DateTime.Now.Second +
                      DateTime.Now.Millisecond);
            //获取定向抽取的原数据集,排除回避人员
            var cx_zdcq = from aa in sjklj.员工
                          where aa.单位id == dwid && aa.角色名称 == jsmc &&
                                  (aa.是否回避人员 == null || (aa.是否回避人员.HasValue && aa.是否回避人员 == false))
                          select aa;
            int rs = cx_zdcq.Count();
            HashSet<int> uniqueNumbers = new HashSet<int>();//里面的元素不能重复
            while (uniqueNumbers.Count < rs)
            {
                int number = sjs.Next(1, 10 * rs + 1);
                uniqueNumbers.Add(number);
            }
            int[] bcfsjs = new int[rs];//不重复随机数数组
            int j = 0;
            foreach (var number in uniqueNumbers)
            {
                bcfsjs[j] = number;
                j++;
            }
            // 分配随机号码
            int i = 1;
            if (rs > 0)
            {
                foreach (var kk in cx_zdcq)
                {

                    kk.随机编号 = bcfsjs[i - 1];
                    i++;
                }
                sjklj.SaveChanges();
            }
            //按照随机编号升序排列提取指定抽取人数
            var cx_xdrsmd = (from aa in cx_zdcq
                             orderby aa.随机编号 ascending
                             select aa).Take(cqrs);
            List<string> lstcq = new List<string>();
            if(cx_xdrsmd.Count()==0)
            {
                lstcq.Add("无人");
            }
            else
            {
                foreach(var mm in cx_xdrsmd)
                {
                    lstcq.Add(mm.姓名标记);
                }
            }
            return lstcq;
        }

渝公网安备 50011902000225号

渝ICP备18008233号-1