#c# #lambda
#c# #лямбда
Вопрос:
Я пытаюсь понять лямбда-операторы… вот что у меня есть на данный момент.
У меня есть List<Record>
named record_list
. Я хочу удалить Record
из нашего списка объект, обладающий Record.UserName
свойством USER1
.
record_list.Remove(record_list.Where(r = r.UserName.ToString() == "USER1"))
Очевидно, я что-то неправильно понимаю, но я думаю, что я близок.
Ошибка, которую я получаю, это:
невозможно преобразовать из
System.Collections.Generic.IEnumerable<Client_SCM_2.Record>
вClient_SCM_2.Record
Заранее спасибо за вашу помощь!
Ответ №1:
Сначала попробуйте получить запись, а затем удалите ее из списка, если она существует
var record = record_list.FirstOrDefault(r => r.UserName.ToString() == "USER1");
if(record != null) {
record_list.Remove(record);
}
Ответ №2:
Приведенный ниже код вернет IEnumerable
var User1List = record_list.Where(x => x.UserName.ToString() == "USER1"));
Чтобы получить ваш объект, используйте First() или FirstOrDefault()
Затем удалите запись
var recordToBeDeleted = User1List.FirstOrDefault();
if(recordToBeDeleted != null) //null means no record found
{
record_list.Remove(recordToBeDeleted )
}
Если вы хотите удалить все записи, соответствующие предикату, используйте removeAll
record_list.RemoveAll(x => x.UserName.ToString() == "USER1");
Ответ №3:
record_list.RemoveRange(record_list.Where(r => r.UserName.ToString() == "USER1"))
Я думаю, вам нужен RemoveRange
Кроме того, вам не хватало a > для лямбда.
Надеюсь, это поможет