【发布时间】:2015-07-15 13:34:52
【问题描述】:
我在 Unity 中遇到了一些问题,我应该如何通过 ID 或名称从列表中删除项目?我认为这应该可行,但显然不行。
....
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) 会怎样?
-
System.Collections.Generic.List
不包含 .FirstOrDefault 的定义,但我想我已经解决了。而不是 if (match == null) 我使用 if (match.TypeId == null) 并且它似乎正在工作。谢谢大家