【问题标题】:Trying to match 2 lists尝试匹配 2 个列表
【发布时间】:2020-01-14 01:45:10
【问题描述】:

所以我将这个列表从数据库中获取到 DataLayer.cs:

public List<Character> ChooseChar(int userid)
    {
        List<Character> CharacterList = new List<Character>();

        var showCharacter = from c in dbConnection.Character
                            where c.UserID == userid
                            select c;

        foreach(var a in showCharacter)
        {
            CharacterList.Add(a);
        }
        return CharacterList;
    }

我在 BusinessLayer.cs 中有这个:

public int userid { get; }

    public List<Character> ChooseChar(int userid)
    {
        return DataLayer.Instance.ChooseChar();
    }

我在 Program.cs 中有这个:

Console.WriteLine("This is the last of characters that are owned by you: ");
                List<Character> chars = BusinessLayer.Instance.ChooseChar();
                foreach(var character in JoinLists)
                {
                    if (character._number == chars.userid)
                    Console.WriteLine(character._type);
                }
                foreach (Character c in chars)
                {
                    Console.WriteLine(c.Health);
                }

我遇到错误:if (character._number == chars.userid)

错误:不包含定义,并且找不到接受第一个类型参数的可访问扩展方法(您是否缺少 using 指令或程序集引用?)

我正在尝试获取 chars.userid 具有的字符并将其与以下索引匹配:

List<Game> JoinLists = new List<Game>();
        JoinLists.Add(new Game(1, "Elf", 6));
        JoinLists.Add(new Game(2, "Angel", 10));
        JoinLists.Add(new Game(3, "Demon", 10));
        JoinLists.Add(new Game(4, "Wizard", 9));
        JoinLists.Add(new Game(5, "Undead", 7));
        JoinLists.Add(new Game(6, "Vampire", 9));
        JoinLists.Add(new Game(7, "Troll", 6));

    public int _number { get; }
    public string _type { get; }
    public int _strength;

    public Game(int charNumber, string charType, int strength)
    {
        this._number = charNumber;
        this._type = charType;
        this._strength = strength;
    }

    public override string ToString()
    {
        return $"{_type} {_strength}";
    }

有什么想法吗?

【问题讨论】:

  • 这与 MySQL 和 SSMS 有什么关系? SSMS是SQL Server的IDE,但上面是C#,不能用SSMS写。请花时间确保您正确标记。如果这与 MySQL 或 SSMS 无关,那么您不应该标记它们。
  • @Larnu 不小心抱歉
  • 这与您在your last question 中报告的错误相同,只是成员不同,类不同。
  • @Amy 不同,因为在那个问题中我不需要使用数据和业务层,因为我没有从数据库中得到任何东西
  • 问题仍然和那个帖子一样,这里的问题与你的数据层无关。这是因为您试图访问chars.userid,但 chars 只是一个 List,它没有这样的属性。您想与列表中的实际项目进行比较,而不是列表本身。尝试利用调试器和智能感知,这些错误很容易识别。

标签: c# collections


【解决方案1】:

在这一行:

List<Character> chars = BusinessLayer.Instance.ChooseChar();

您需要将一个整数传递给ChooseChar;虽然我认为这是一个错字,否则您的代码将无法编译。

无论如何,chars 是一个 List,它没有属性 userid;这是列表中每个 Character 对象的属性。

在您的 if 语句中,您需要重新使用您传递给 ChooseChar() 的相同整数,例如

int userid;
List<Character> chars = BusinessLayer.Instance.ChooseChar(userid);
foreach(var character in JoinLists)
{
    if (character._number == userid)
    Console.WriteLine(character._type);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多