Как удалить элементы из объекта списка в C#
У меня есть какой-то список, и мне нужно вернуть только выбранный элемент.
кроме обязательных значений, оставшихся все потребности должны быть удалены из моего объекта списка.
для этого я написал код, как показано ниже, но получаю эту ошибку:
collection was modified enumeration operation
Что я уже пробовал:
class Program { static void Main() { UserDetails obj = new UserDetails(); obj.listUserDetails = obj.GetUserDetails(); UserDetails obj1 = new UserDetails(); string userIdentifier = "i3"; foreach(var userDetail in obj.listUserDetails) { if (userDetail.Identifier != userIdentifier) { obj.listUserDetails.RemoveAll(a => a.Identifier != userIdentifier); } } foreach (var item in obj.listUserDetails) { Console.WriteLine(item.Identifier); } Console.Read(); } } public class UserDetails { public int UserID { get; set; } public string UserName { get; set; } public string Identifier { get; set; } public List<UserDetails> listUserDetails { get; set; } public List<UserDetails> GetUserDetails() { List<UserDetails> listUserDetails = new List<UserDetails>() { new UserDetails() { UserID=1,UserName="TestData",Identifier="i1"}, new UserDetails() { UserID=2,UserName="TestData1",Identifier="i2"}, new UserDetails() { UserID=3,UserName="TestData2",Identifier="i3"}, new UserDetails() { UserID=4,UserName="TestData3",Identifier="i4"}, new UserDetails() { UserID=5,UserName="TestData4",Identifier="i5"}, new UserDetails() { UserID=6,UserName="TestData5",Identifier="i6"}, }; return listUserDetails; } }
Richard Deeming
В этом случае вам даже не понадобится первый foreach
петля. То RemoveAll
метод удалит все элементы, соответствующие предоставленному предикату; вам не нужно вызывать его несколько раз с одним и тем же предикатом.