1

私はIQueryable質問のオブジェクト q を持っています。

  DataClasses1DataContext dc = new DataClasses1DataContext();
        var q = from a in dc.GetTable<Questions>()
                select a ;

問題の私はquestionIdと を持っていquestionます。

ここに画像の説明を入力
IQueryable次の質問に基づいてデータを順番にループしbutton click eventて、最初の質問テキストを次の質問に基づいLebel.Textて回答に含めるに はどうすればよいですか?DropDownquestionIdIQueryable

4

3 に答える 3

2
var enumerator = q.AsEnumerable().GetEnumerator();

In event handler:

if(enumerator.MoveNext())
{
      var question = enumerator.Current;
}
于 2013-01-12T14:35:36.097 に答える
0

通常、 を直接使用するのは悪い習慣Enumeratorです。

その場で質問を取得する必要がある場合は、ユーザーがボタンを押すたびにデータベース リクエストを行います。

Question question;

using (dataContext = new DataClasses1DataContext())
    question = dataContext.GetTable<Questions>().Skip(questionIndex).First();

すべての質問をメモリに保持する必要がある場合は、すべての質問をアプリケーションのメモリに投影します。

IList<Question> questions;

using (dataContext = new DataClasses1DataContext())
    questions = dataContext.GetTable<Questions>().ToList();

また、必要以上に SQL (またはその他のデータベース) 接続をキープアライブにしておくのは悪い習慣です。数十の理由がありますが、最も一般的な理由の 1 つは、デフォルトの C# トランザクション実装内での読み取り中に、テーブルがそのテーブルのロックを保持し、他の要求を処理できなくなる可能性があることです。

于 2013-01-12T14:48:18.150 に答える
0
ctor()
{
    DataClasses1DataContext dc = new DataClasses1DataContext();
    var q = from a in dc.GetTable<Questions>()
            select a;
    _questionEnumerator = q.GetEnumerator();
}

void btn_click(object sender, EventArgs args)
{
    if (_questionEnumerator.MoveNext())
    {
        var row = _questionEnumerator.Current;
        // do stuff
    }    
}
于 2013-01-12T14:35:56.270 に答える