//随机生成试题 private string _sjTextAdd(string ID) { string SQL = "SELECT [分类ID],[难度配置] FROM [CNGTZ].[dbo].[TK_试卷] where ID=" + ID; DAL dal = new DAL(); string[] x = dal.RunSqlStrings(SQL); x[0] = x[0].Substring(1, x[0].Length - 2); x[1] = x[1].Substring(1, x[1].Length - 2); DataTable dt1 = dal.RunSqlDataTable("SELECT [ID] FROM [CNGTZ].[dbo].[TK_题目] where 难度=1 and 所属分类 IN(" + x[0] + ") ");//简单题组 DataTable dt2 = dal.RunSqlDataTable("SELECT [ID] FROM [CNGTZ].[dbo].[TK_题目] where 难度=2 and 所属分类 IN(" + x[0] + ") ");//适中题组 DataTable dt3 = dal.RunSqlDataTable("SELECT [ID] FROM [CNGTZ].[dbo].[TK_题目] where 难度=3 and 所属分类 IN(" + x[0] + ") ");//困难题组 DataTable[] dt = new DataTable[] { dt1, dt2, dt3 }; string[] nds = x[1].Split(Convert.ToChar(",")); int[] nd = new int[3]; nd[0] = int.Parse(nds[0]); nd[1] = int.Parse(nds[1]); nd[2] = int.Parse(nds[2]); Random ra = new Random(unchecked((int)DateTime.Now.Ticks)); for (int i = 0; i < nd.Length; i++) { if (dt[i].Rows.Count > nd[i])//当试题组 题目数量>难度配置 题目数量 { int xhcs = dt[i].Rows.Count - nd[i]; for (int j = 0; j < xhcs; j++)//随机删除 多余行数 { int h = ra.Next(0, dt[i].Rows.Count); if (h >= 0 && h < dt[i].Rows.Count) { dt[i].Rows.RemoveAt(h); } } } } DataTable dtx = null; try { dal.TranBegin(); dal.ExeSql("create table #testst (id int)");//创建临时表 for (int i = 0; i < dt.Length; i++) { foreach (DataRow row in dt[i].Rows)//将 3组 (普通,适中,困难) 题目ID写入临时表 { SQL = "INSERT INTO #testst (id) VALUES(" + row["ID"].ToString() + ")"; dal.ExeSql(SQL); } } dtx = dal.ExeSqlDataTable("SELECT [ID] FROM [CNGTZ].[dbo].[TK_题目] where ID IN (SELECT id FROM #testst) ORDER BY 题类型,NEWID()");//随机排序后 生成DataTable dal.ExeSql("DROP TABLE #testst"); dal.TranCommit(); } catch (Exception) { dal.TranRollBack(); } string retext = ""; if (dtx != null) { foreach (DataRow row in dtx.Rows) { retext += row["id"].ToString() + ","; } retext = "[" + retext.Substring(0, retext.Length - 1) + "]"; } Sys.DebugMes(retext); return retext; }