Я столкнулся с некоторыми проблемами в Unity, как я должен удалить элемент из списка по его идентификатору или имени? Я думаю, что это должно сработать, но, очевидно, это не так.Unity - не удается найти объект в списке
....
List<MyDataType> myList = new List<MyDataType>();
....
public static void removeItemFromList(int id)
{
foreach (MyDataType item in myList)
{
if (item.TypeId == id)
Debug.Log("List contains ID: " + item.TypeId);
}
// PRINTS AN OBJECT WITH THE ID - works as expected
var match = myList.Find(p => p.TypeId == id);
// SEEMS LIKE IT CAN'T FIND THE OBJECT WITH THE ID
if (match == null)
{
Debug.Log("DOES NOT EXIST");
return;
}
// always returns DOES NOT EXIST, WHY?
myList.Remove(match);
}
Что делать, если вы меняете .Find .FirstOrDefault (p => p.TypeId == id)? – Fabjan
System.Collections.Generic.List не содержит определения для .FirstOrDefault, но я думаю, что решил это tho. Вместо if (match == null) я использовал if (match.TypeId == null) и, похоже, работает. Всем спасибо –
John