3

我正在尝试使用 asp.net C# 创建一个显示问题和提示的表单应用程序。我打算将这两者放在一个单独的列表集合中,但问题和提示可能会变得不连贯,所以我决定创建一个包含 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 和提示),但我什至无法做到。但是,最终我希望能够显示 question1,然后当用户点击提示按钮时,我可以显示相应的提示 1。另外,使用类和列表是逻辑上实现我想要的最佳方式吗?

这可能是一些基础知识,我尝试查找它,例如如何使用列表、如何从列表中检索数据等等,但没有运气。

任何帮助都感激不尽。

4

6 回答 6

4

如果您可以跟踪哪些提示在哪些位置,那么您可以使用

var qHint = QHintList[i];

如果您无法跟踪,则可以使用 List 上的 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

如果我的方向是正确的,那么您需要在属性提示中找到文本提示 1。多人的情况下

foreach QHint q in QHintList
{
   if(q.Hint.Contains("hint1"))
   {
     // then do something cool;
   }
}
于 2012-08-22T15:24:42.297 回答
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 回答