3

質問とヒントを表示するasp.netC#を使用してフォームアプリケーションを作成しようとしています。2つを別々のリストコレクションに入れるつもりでしたが、質問とヒントがばらばらになる可能性があるため、ID、Q、およびヒントを受け取るクラスを作成して、それらを次のようにリストコレクションに入れることにしました。セット。

QHint.csファイルのコードは次のとおりです。

public QHint (int ID, string Q, string Hint)
{
      this.ID = ID;
      this.Q = Q;
      this.Hint = Hint;
}

public int ID { get; set; }
public string Q { get; set; }
public string Hint { get; set; }

form1.csファイルのコードは次のとおりです。

List<QHint> QHintList = new List<QHint>;
QHintList.add(new QHint(1, "quesiton1 blah blah?", "hint1 blah blah"));
QHintList.add(new QHint(2, "quesiton2 blah blah?", "hint2 blah blah"));
.... and so on....

私の質問は、ヒント1など、リストから取得するアイテムをどのように指定できるかということです。QHintList [0]を使用してセット(ID、Q、およびヒント)を取得しようとしましたが、それもできませんでした。ただし、最終的には質問1を表示できるようにしたいので、ユーザーがヒントボタンを押すと、対応するヒント1を表示できます。また、私が望むことを達成するために、クラスとリストを論理的に使用するのが最善の方法ですか?

これは基本的な知識かもしれませんが、リストの使い方やリストからデータを取得する方法などを調べてみましたが、うまくいきませんでした。

どんな助けでも大歓迎です。

4

6 に答える 6

4

どのヒントがどの位置にあるかを追跡できる場合は、次を使用できます。

var qHint = QHintList[i];

追跡する方法がない場合は、述語をとるリストのfindメソッドを使用できます。私はこれがうまくいくと思います(あなたがその時に利用できる情報に依存します)

var qHint = QHintList.Find(q => q.Id == YourId);
于 2012-08-22T15:23:35.733 に答える
1

パフォーマンスを向上させるための辞書を作成してみませんか

Dictionary<int, QHint> QHintList = new Dictionary<int, QHint>;
QHintList.add(1, new QHint(1, "quesiton1 blah blah?", "hint1 blah blah"));
QHintList.add(2, new QHint(2, "quesiton2 blah blah?", "hint2 blah blah"));

次に、このように呼び出すことができます。

int questionId = 1;
QHintList[questionId].Hint
于 2012-08-22T15:22:33.503 に答える
0
var hint = QHintList[0].Hint;
Console.WriteLine(hint);
于 2012-08-22T15:19:25.563 に答える
0
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;

namespace QuestHint
{
    class QHint
    {
        public QHint() { }
        public QHint(int ID, string Q, string Hint)
        {
            this.ID = ID;
            this.Q = Q;
            this.Hint = Hint;
        }

        public int ID { get; set; }
        public string Q { get; set; }
        public string Hint { get; set; }
        public List<QHint> QHintList = new List<QHint>();
    }

    class Program
    {
        static void Main(string[] args)
        {
            QHint q = new QHint();

            q.QHintList.Add(new QHint(1, "quesiton1 blah blah?", "hint1 blah blah"));
            q.QHintList.Add(new QHint(42, "quesiton2 blah blah?", "hint2 blah blah"));


            int magicNumber = 42;

            Debug.WriteLine(q.QHintList[0].Q); // output quesiton1 blah blah?
            Debug.WriteLine(q.QHintList.Find(obj => obj.ID == magicNumber).Hint); //hint2 blah blah
// you are saying like: find me the obj, where the ID of that obj is equals my magicNumber. And from that found object, give me the field Hint.
        }
    }
}
于 2012-08-22T15:19:48.090 に答える
0

Linqでこれを試してください

 var hint = QHintList.First(p=>p.ID == inputId).Hint
于 2012-08-22T15:24:30.547 に答える
0

私が正しい方向にいる場合は、プロパティヒントでテキストhint1を見つける必要があります。複数の場合

foreach QHint q in QHintList
{
   if(q.Hint.Contains("hint1"))
   {
     // then do something cool;
   }
}
于 2012-08-22T15:24:42.297 に答える