2013-08-30 40 views
0

我想獲得一個隨機數的最小和最大的訪問數據表中的表,然後將該隨機數匹配到我的表,並顯示field1column和等於該隨機數字的行。我找到了一個隨機數字生成器和一些代碼,它們應該給我表格的最小和最大數字。我想將我的號碼與表格中的行相匹配。我對c#編程非常陌生,我只是想更好地掌握編程。這是我的代碼到目前爲止,任何幫助將不勝感激。代碼中的粗體部分是我的代碼中出現錯誤的地方。感謝您的期待。C#和隨機顯示一行視覺文字遊戲

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 

namespace CapstoneProgram 
{ 
    public partial class SightWordRandom : Form 
    { 
     public SightWordRandom() 
     { 
      InitializeComponent(); 
     } 

     private void SightWordRandom_Load(object sender, EventArgs e) 
     { 

     } 

     private void btnNext_Click(object sender, EventArgs e) 
     { 
      Double sword; 



      var answer = this.sightWordsDB1DataSet.Kindergarten.Aggregate(new { Min = int.MinValue, Max = int.MaxValue }, 
                (a, b) => new 
                { 
                 Min = Math.Min(a.Min, b.Field<int>("")), 
                 Max = Math.Max(a.Max, b.Field<int>("")) 
                }); 
      int min = answer.Min; 
      int max = answer.Max; 

      Random rng = new Random(); 
      for (int i = min; i < max; i++) 

       **sword = (this.sightWordsDB1DataSet.Kindergarten.IDColumn == rng);** 

       lblSightWord.Text = Convert.ToString(sword); 
     } 


    } 



    } 
+0

距離for循環lblSightWord? – Jason

+0

變量劍被設置爲雙精度,但是您將其賦值爲布爾值。你想用什麼來填充變量劍?還有什麼是你得到的實際錯誤? –

回答

0

雖然我不能肯定,我也明白了,這裏去一試,可能潛在地在你打算做什麼方向移動。

我明白你的說明和代碼如下:

實際上你需要生成一個隨機數來比較。我猜你想要在確定的minmax之間生成一個數字,並選擇Kindergarten表中的某一特定字段等於隨機數的那一行。顯然這個字段可以被訪問爲Field<int>("")(這有點奇怪,有一行沒有行名,你可能想要仔細檢查這是否正確,或者因爲你使用的是強類型數據集,請使用成員字段你做了IDColumn)。

對於該字段匹配生成的隨機值的第一行,您希望檢索該行中另一個字段的值爲sword。從當前的代碼中不清楚該字段在Kindergarten表中的名稱。在我的建議下面,我會用字符串「劍」來提及它。如果實際上該列命名不同,則可能需要更改該列。

此外,您當前的代碼中包含一些缺陷,並且包含您聚合的minmax的初始值。

所以這裏去我的建議:

private void btnNext_Click(object sender, EventArgs e) 
{ 
    Double sword; 

    var answer = this.sightWordsDB1DataSet.Kindergarten.Aggregate(
     new { Min = int.MaxValue, Max = int.MinValue }, 
     (a, b) => new 
     { 
      Min = Math.Min(a.Min, b.Field<int>("")), 
      Max = Math.Max(a.Max, b.Field<int>("")) 
     }); 

    int min = answer.Min; 
    int max = answer.Max; 
    Random rng = new Random(); 

    // The value to be matched. 
    var selectedMatchingValue = rng.Next(min, max + 1); 

    sword = this.sightWordsDB1DataSet.Kindergarten 
     .Where(r => r.Field<int>("") == selectedMatchingValue) 
     .Select(r => r.Field<double>("sword")) // change to the correct column name. 
     .First(); 

    lblSightWord.Text = Convert.ToString(sword); 
}