1、List隨機排序方法
public List<T> RandomSortList<T>(List<T> ListT)
{
Random random = new Random();
List<T> newList = new List<T>();
foreach (T item in ListT)
{
newList.Insert(random.Next(newList.Count + 1), item);
}
return newList;
}
2、隨機生成題目
/// <summary>
/// 隨機生成題目
/// </summary>
/// <returns></returns>
public List<Entities.V_Quelibrary> GetRandomQue()
{
List<string> names = new List<string>();
List<string> values = new List<string>();
string itemId =Config.QueType;
string hql = "from V_Quelibrary where state=1 and Item_Id=:Item_Id";
names.Add("Item_Id");
values.Add(itemId);
List<Entities.V_Quelibrary> quelibraryList = queService.GetListQuelibraryNoPage(hql, names, values);
List<Entities.V_Quelibrary> queList = new List<Entities.V_Quelibrary>();
//篩選分值為2的隨機兩道題
queList.AddRange(this.RandomSortList<Entities.V_Quelibrary>(quelibraryList.Where(t => t.Score == 2).ToList()).Take(2).ToList());
//篩選分值為5的隨機兩道題
queList.AddRange(this.RandomSortList<Entities.V_Quelibrary>(quelibraryList.Where(t => t.Score == 5).ToList()).Take(2).ToList());
//篩選分值為8的隨機兩道題
queList.AddRange(this.RandomSortList<Entities.V_Quelibrary>(quelibraryList.Where(t => t.Score == 8).ToList()).Take(2).ToList());
//篩選分值為12的隨機兩道題
queList.AddRange(this.RandomSortList<Entities.V_Quelibrary>(quelibraryList.Where(t => t.Score == 12).ToList()).Take(2).ToList());
//篩選分值為20的隨機兩道題
queList.AddRange(this.RandomSortList<Entities.V_Quelibrary>(quelibraryList.Where(t => t.Score == 20).ToList()).Take(2).ToList());
//獲得的list再次隨機排序
queList = this.RandomSortList<Entities.V_Quelibrary>(queList);
return queList;
}