Member 13434593 Ответов: 1

Помогите с meathod поиск в c#.net


Я пробовал со всеми методами find, findAll, contains, exits, но seachbyFirstName, searchbyLastName вообще не работает!! plz может кто-нибудь помочь??

Конструктор для SearchbyFirstName и другие находятся в классе addressbook!!

Что я уже пробовал:

Класс адресной книги
использование системы;
использование системы.Коллекции.Общий;
использование System. Linq;
используя системы.Текст;
использование системы.Нарезание резьбы.Задачи;

пространство имен ConsoleApplication14
{
публичный класс Class1
{
частный список<class2 & gt; персон;
публичный класс 1()
{
персоны = новый список & lt;class2>();
}
public virtual bool add (Class2 person)
{
по каждому элементу (Класс2 п В лиц)
{
if (string.Сравнение(стр. Идентификатор, " идентификатор ", значение stringcomparison.OrdinalIgnoreCase) == 0)
{
возвращать false;
}
}
лиц.Добавить (персона);
вернуть true;
}
public virtual bool delete (Class2 person)
{
для (int i = 0; i < persons.Граф; i++)
{
Класс 2 p = лица[i];
если (p. равно (person))
{
лиц.RemoveAt(i);
вернуть true;
}
}
возвращать false;
}
публичный виртуальный список & lt;class2> searchByFirstName(строка fName)
{
List< class2> res = новый список & lt;class2>();
для (int i = 0; i < persons.Граф; i++)
{
Класс 2 p = лица[i];
if (p. [i]. StringComparison.OrdinalIgnoreCase (fName)==0 )
{

РЭС.Добавить(п);

}
}
вернуться РЭС;
}
публичный виртуальный список & lt;class2> searchByLastName(строка lName)
{
List< class2> res = новый список & lt;class2>();
для (int i = 0; i < persons.Граф; i++)
{
Класс 2 p = лица[i];
if (string.Сравните(p. LastName," LastName", StringComparison.OrdinalIgnoreCase) == 0)
{
РЭС.Добавить(п);
}
}
вернуться РЭС;
}
public virtual Class2 searchById(string id)
{
для (int i = 0; i < persons.Граф; i++)
{
Класс 2 p = лица[i];
if (String.Сравнение(стр. Идентификатор, "идентификатор", значение stringcomparison.OrdinalIgnoreCase) == 0)
{
возвращение п;
}
}
возвращать null;
}
общедоступный виртуальный недействительными печати()
{
Приставка.WriteLine ("Печать Адресной Книги");
по каждому элементу (Класс2 п В лиц)
{
Приставка.WriteLine(p);
}

}
}
}

PersonClass

использование системы;
использование System. Linq;
используя системы.Текст;
использование системы.Нарезание резьбы.Задачи;

пространство имен ConsoleApplication14
{
публичный класс Class2
{
частная строку "имя";
частная строку "фамилия";
идентификатор частной строки;
public Class2 (string firstName, string lastName, string id): base()


{
это.имя = "имя";
this. lastName = фамилия;
это.идентификатор = идентификатор;
}
общедоступный виртуальный строку "имя"
{
получить
{
вернуть имя;
}
набор
{
это.имя = "имя";
}
}
общедоступный виртуальный строку "фамилия"
{
получить
{
вернуть фамилию;
}
набор
{
this. lastName = фамилия;
}
}
публичный идентификатор виртуальной строки
{
получить
{
идентификатор возврата;
}
набор
{
это.идентификатор = идентификатор;
}
}
public override string ToString()
{
возвращение "человека[имя=" + имя + ", "фамилия" =" + "фамилия"+ ", код=" + Код + "]";
}
}
}

addressBookTester

использование системы;
использование System. Linq;
используя системы.Текст;
использование системы.Нарезание резьбы.Задачи;

пространство имен ConsoleApplication14
{
программа занятий
{
static void Main (string[] args)
{
Приставка.WriteLine ("Создание Класса Адресной Книги");
Class1 addressBook = новый Class1();
Class2 p1 = новый Class2("fName1", "lName3", " x0001");
Class2 p2 = новый Class2("fName2", "lName4", " x0002");
Class2 p3 = новый Class2("fName3", "lName9", " x0003");
Class2 p4 = новый Class2("fName4", "lName8", " x0004");
Class2 p5 = новый Class2("fName5", "lName6", " x0005");
Class2 p6 = новый Class2("fName6", "lName4", " x0006");
Class2 p7 = новый Class2("fName7", "lName1", " x0007");
Class2 p8 = новый Class2("fName8", "lName4", " x0008");
Class2 p9 = новый Class2("fName9", "lName7", " x0009");
Class2 p10 = новый Class2("fName10", "lName6", " x00010");
Class2 p11 = новый Class2("fName1", "lName2", " x00011");
Class2 p12 = новый Class2("fName2", "lName3", " x0001");
Приставка.Метода WriteLine("ожидается : истинный \Т" + Р1 + " дополнение :" + адресная книга.добавить(Р1));
Приставка.Метода WriteLine("ожидается : истинный \Т" + Р2 + " дополнение :" + адресная книга.добавить(П2));
Приставка.Метода WriteLine("ожидается : истинный \Т" + Р3 + " дополнение :" + адресная книга.добавить(Р3));
Приставка.Метода WriteLine("ожидается : истинный \Т" + Р4 + " дополнение :" + адресная книга.добавить(Р4));
Приставка.Метода WriteLine("ожидается : истинный \Т" + Р5 + " дополнение :" + адресная книга.добавить(П5));
Приставка.Метода WriteLine("ожидается : истинный \Т" + Р6 + " дополнение :" + адресная книга.добавить(П6));
Приставка.Метода WriteLine("ожидается : истинный \Т" + Р7 + " дополнение :" + адресная книга.добавить(Р7));
Приставка.Метода WriteLine("ожидается : истинный \Т" + П8 + " дополнение :" + адресная книга.добавить(П8));
Приставка.Метода WriteLine("ожидается : истинный \Т" + П9 + " дополнение :" + адресная книга.добавить(Р9));
Приставка.Метода WriteLine("ожидается : истинный \Т" + Р10 + " дополнение :" + адресная книга.добавить(Р10));
Приставка.Метода WriteLine("ожидается : накладные \Т" + Р11 + " дополнение :" + адресная книга.добавить(Р11));
Приставка.Метода WriteLine("ожидается : накладные \Т" + Р12 + " дополнение :" + адресная книга.добавить(Р12));
Приставка.WriteLine ("перед удалением человека");
адресная книга. печать();
Приставка.WriteLine ("удаление человека с идентификатором x0007");
адресная книга.удалить(p7);
Приставка.WriteLine ("после удаления человека");
адресная книга. печать();
Приставка.WriteLine ("поиск лиц с идентификатором x0001");
Приставка.WriteLine ("Result :" + addressBook. searchById ("x0001"));
Приставка.WriteLine ("поиск лиц с именем fName1");
Приставка.WriteLine ("Result :" + addressBook.searchByFirstName("fname1"));
Приставка.WriteLine ("поиск лиц с фамилией lName4");
Приставка.WriteLine ("Result :" + addressBook.searchByLastName ("lname4"));

}
}
}

1 Ответов

Рейтинг:
1

OriginalGriff

searchByLastName это никогда не сработает, если только ваш пользователь не будет назван "John LastName" - потому что вы сравниваете его с фиксированной строкой:

public virtual List<class2> searchByLastName(string lName)
    {
    List<class2> res = new List <class2>();
    for (int i = 0; i < persons.Count; i++)
        {
        Class2 p = persons[i];
        if (string.Compare(p.LastName,"LastName", StringComparison.OrdinalIgnoreCase) == 0)
            {
            res.Add(p);
            }
        }
    return res;
    }

searchByFirstName не будет работать, потому что он даже не будет компилироваться!
public virtual List<class2> searchByFirstName(string fName)
    {
    List<class2> res = new List<class2>();
    for (int i = 0; i < persons.Count; i++)
        {
        Class2 p = persons[i];
        if( p.[i].StringComparison.OrdinalIgnoreCase(fName)==0 )
            {
            res.Add(p);
            }
        }
    }
Поскольку вы не указываете, какую часть вашего экземпляра Class2 следует сравнивать, вы просто делаете что-то странное с точками и квадратными скобками.

Пожалуйста, сделайте себе одолжение: в данный момент Вы, кажется, пытаетесь кодировать догадками, а это не жизнеспособная текущая стратегия в долгосрочной перспективе. Остановитесь сейчас и начните думать о том, что вы пытаетесь сделать, и об элементах кода, с которыми вы познакомились. Затем попробуйте выполнить одну работу за раз, тщательно протестируйте ее, а затем переходите к следующей части задачи. Получить поиск по имени и по фамилии должны быть практически идентичные методы, так что получите один рабочий, и он даст вам другой в качестве халявы!