public static string LuckyDraw(string filter, string key, DateTime start, DateTime end, DateTime open, string prize, int count, string path) { setFilter(filter); setKeyWord(key); setStart(start); setEnd(end); setOpen(open); setPrize(prize); setCount(count); SQLManager sl = new SQLManager(); DataTable dt = sl.UniversalGetAPI("select *from message"); Dictionary <string, Join> dictionary = new Dictionary <string, Join>();//存储潜在有效参与抽奖者 //过滤处理 for (int i = 0; dt != null && i < dt.Rows.Count; ++i) { Message message = new Message { id = dt.Rows[i]["id"].ToString(), qq = dt.Rows[i]["qq"].ToString(), nickname = dt.Rows[i]["nickname"].ToString(), publish_time = dt.Rows[i]["publish_time"].ToString(), contain = dt.Rows[i]["contain"].ToString() }; if (islegal(message)) { if (!dictionary.ContainsKey(message.qq)) { Join join = new Join { qq = message.qq, nickname = message.nickname }; if (message.contain.Contains(canPrizeStr) && DateTime.Compare(DateTime.Parse(message.publish_time), start) >= 0 && DateTime.Compare(DateTime.Parse(message.publish_time), end) <= 0) { join.publish_time = Convert.ToDateTime(message.publish_time); join.canPrize = true; } join.datetime_contain.Add(Convert.ToDateTime(message.publish_time), message.contain); dictionary.Add(message.qq, join); } else { Join join; dictionary.TryGetValue(message.qq, out join); if (message.contain.Contains(canPrizeStr) && DateTime.Compare(DateTime.Parse(message.publish_time), start) >= 0 && DateTime.Compare(DateTime.Parse(message.publish_time), end) <= 0) { join.publish_time = Convert.ToDateTime(message.publish_time); join.canPrize = true; } try { join.datetime_contain.Add(Convert.ToDateTime(message.publish_time), message.contain); } catch (Exception e) { } } } } //抽奖 award = randomPrize(dictionary, path); return("success"); }