Попытка сопоставить 2 списка - PullRequest
0 голосов
/ 13 января 2020

Итак, я получаю этот список из базы данных в 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();
    }

У меня есть это в программе. 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)

error: не содержит определения и не доступен метод расширения, принимающий первый аргумент может быть найден тип (вам не хватает директивы 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}";
    }

Есть идеи, пожалуйста?

1 Ответ

0 голосов
/ 13 января 2020

В этой строке здесь:

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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...