mutasadiq iqbal Ответов: 1

Как преобразовать список объектов в список строк.


I write a code for Classes i saved the data in the list of user defined type in which i want to delete the data from the user defined type list so if the list contains the data then it will remove it from the list so i use the function of list that is Contain but in contain function it only accept the string data
Plz tell me how should i convert the user defined list to the string list. Then i can check the following data is avaible or not then it will delete it from th


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

public void remove_item(List<Male_zone>mens, Male_zone m)
       {
             List<string> asobj = new List<string>();

             asobj = mens.Cast<string>().ToList();

           if (asobj.Contains(m.m_item))
               {
                   asobj.Remove(m.m_item);
                   Console.WriteLine("Successfully delete");

               }
           else
           {
               Console.WriteLine("Not Found");
           }

       }

Main Function

Male_zone mens121 = new Male_zone();
Console.WriteLine("Please Enter the name of the item");

 mens121.m_item = Console.ReadLine();
mens121.remove_item(male_outlet, mens121);

1 Ответов

Рейтинг:
0

OriginalGriff

Ваш код довольно запутан:
На самом деле вы ничего не удаляете из списка, который передаете, потому что операция приведения создает копию оригинала, а не предоставляет доступ к оригиналу под другим типом.
Приведение списка объектов не использует содержимое объектов и возвращает первую строку, оно возвращает объект как строку - что означает, что объект должен реализовать явный оператор приведения.
Даже если он преобразует его в "правильную строку", это будет список строк, который не позволит вам удалить элемент из исходной коллекции!
Попробовать это:

private bool RemoveItem(List<Male_zone> mens, Male_zone m)
    {
    Male_zone found = mens.FirstOrDefault(i => i.m_item == m.m_item);
    if (found != null)
        {
        mens.Remove(found);
        return true;
        }
    return false;
    }
И, пожалуйста, используйте стандартные соглашения об именовании - никаких подчеркиваний, CamelCase, никакого префикса "m_" на членах... Все, что вы используете, устарело: это очень старый формат C++, который предшествует C#, и он был доступен с 2002 года ...