如何从“;公共列表<;字符串>;[]”;使用MySql C#

本文关键字:gt 使用 MySql 字符串 lt 列表 | 更新日期: 2023-09-27 18:26:01

你好,我正在寻求一些帮助。我正在尝试从这段代码中获取结果。。。

public List<string>[] SelectPickUp()
{
    string query = "SELECT * FROM pickup";
    List<string>[] list = new List<string>[7];
    list[0] = new List<string>();
    list[1] = new List<string>();
    list[2] = new List<string>();
    list[3] = new List<string>();
    list[4] = new List<string>();
    list[5] = new List<string>();
    list[6] = new List<string>();
    if (this.OpenConnection() == true)
    {
        MySqlCommand cmd = new MySqlCommand(query, connection);
        MySqlDataReader dataReader = cmd.ExecuteReader();
        while (dataReader.Read())
        {
            list[0].Add(dataReader["QuestName"] + "");
            list[1].Add(dataReader["QuestId"] + "");
            list[2].Add(dataReader["GiverName"] + "");
            list[3].Add(dataReader["GiverId"] + "");
            list[4].Add(dataReader["MoveToX"] + "");
            list[5].Add(dataReader["MoveToY"] + "");
            list[6].Add(dataReader["MoveToZ"] + "");
        }
        dataReader.Close();
        this.CloseConnection();
        return list;
    }
    else
    {
        return list;
    }
}

问题是我如何在另一个地方使用这些信息,例如。。。

UInt16 CurrentQuest;
UInt16 SecondQuest;
UInt16 ThridQuest;
if (Questing.Quests.Count == 0)
{
      test.SelectPickUp();
      test.SelectPickUp().list[0].list[0] = CurrentQuest;
      test.SelectPickUp().list[1].list[1] = SecondQuest;
      test.SelectPickUp().list2].list[] = ThridQuest;
}

这种性质的东西,任何帮助都非常感谢!

如何从“;公共列表<;字符串>;[]”;使用MySql C#

嗯,我不能理解你的动机,但我认为有更好的方法来解决你的问题。DTO课怎么样?

public class Quest
{
    public string QuestName { get; set; }
    public string QuestId { get; set; }
    public string GiverName { get; set; }
    public string GiverId { get; set; }
    public string MoveToX { get; set; }
    public string MoveToY { get; set; }
    public string MoveToZ { get; set; }
}

现在您可以使用更多OO代码:

var quests = new List<Quest>();
if (this.OpenConnection() == true)
{
    MySqlCommand cmd = new MySqlCommand(query, connection);
    MySqlDataReader dataReader = cmd.ExecuteReader();
    while (dataReader.Read())
    {
        var quest = new Quest
        {
            QuestName = (string) dataReader["QuestName"],
            QuestId = (string) dataReader["QuestId"],
            GiverName = (string) dataReader["GiverName"],
            GiverId = (string) dataReader["GiverId"],
            MoveToX = (string) dataReader["MoveToX"],
            MoveToY = (string) dataReader["MoveToY"],
            MoveToZ = (string) dataReader["MoveToZ"]
        };
        quests.Add(quest);
    }
    dataReader.Close();
    this.CloseConnection();
    return quests;
}

下一步,您不仅可以使用字符串值。如果QuestId是inetger,则可以将其强制转换为int:

QuestId = (int) dataReader["QuestId"],

避免此代码:

if (Questing.Quests.Count == 0)
{
    test.SelectPickUp();
    test.SelectPickUp().list[0].list[0] = CurrentQuest;
    test.SelectPickUp().list[1].list[1] = SecondQuest;
    test.SelectPickUp().list2].list[] = ThridQuest;
}

您应该枚举阅读器一次,然后尝试以下操作:

var quests = test.SelectPickUp();
if (Questing.Quests.Count == 0)
{
    quests.Insert(0, CurrentQuest);
    quests.Insert(1, SecondQuest);
    quests.Insert(2, ThridQuest);
}