我開始使用一個隨機數組進行測驗,但是在完成這個測試之後,我意識到沒有辦法讓我能夠跟蹤用戶選擇的答案。我已經展示瞭如何使用一些洗牌算法,但它讓我感到困惑。如何從linq查詢中分別獲取列表中的鍵和值兩者
所以我決定創建一個List<KeyValuePair>
來保存我的數據集中的答案,關鍵是一個字符串,它是數據集的一行,值是一個整數,對於正確答案是1,對於錯誤答案是0 。
所以我正在做的是,我有四個按鈕被CSS程式化,我將按鈕文本轉換爲四個答案之一。這可能聽起來像不好的編程習慣,但它是我能想出的唯一東西,那就是將tab順序屬性更改爲1或0,以便我可以跟蹤最終顯示在結果頁面中的答案。
我使用的代碼是這樣的......
ds = MyDs(1);
System.Random rnd = new System.Random();
var QA = new List<KeyValuePair<string,int>>();
QA.Add(new KeyValuePair<string, int>(ds.Tables[0].Rows[0]["CorrectAnswer"].ToString(),1));
QA.Add(new KeyValuePair<string, int>(ds.Tables[0].Rows[0]["WrongAnswer1"].ToString(), 0));
QA.Add(new KeyValuePair<string, int>(ds.Tables[0].Rows[0]["WrongAnswer2"].ToString(), 0));
QA.Add(new KeyValuePair<string, int>(ds.Tables[0].Rows[0]["WrongAnswer3"].ToString(), 0));
var myQa = QA.OrderBy(c=> rnd.Next()).Select(c=>c.Key.ToString()).ToList();
Label5.Text = ds.Tables[0].Rows[0]["Question"].ToString();
Button1.Text = myQa[0].ToString();
Button2.Text = myQa[1].ToString();
Button3.Text = myQa[2].ToString();
Button4.Text = myQa[3].ToString();
,這是好的,當你在myQa,關鍵像它應該顯示出來,但如果我這樣做...
var myQa = QA.OrderBy(c=> rnd.Next()).Select(c=>c.Key.ToString() + c.Value.ToString()).ToList();
然後我的按鈕文本添加鍵和值的文本,我不希望這一點,我只想要按鍵顯示在按鈕文本,然後能夠訪問它的價值。
任何想法或我失去了什麼東西?我假設它在我的查詢中,我不知道如何解決它。
感謝
這個我明白了,我理解了這個部分。我只是想你建議,但沒有myQa [0]。重點或myQa.Value – Chris
我創建了小樣本,您可以在這裏http://sdrv.ms/1eKpR4o – Konstantin
對不起,這是錯誤的鏈接看看這是正確的http://sdrv.ms/1eKpR4o – Konstantin