public struct stuff
{
public int ID;
public int quan;
}
Run Code Online (Sandbox Code Playgroud)
我想删除一个ID
= 1 的产品.我正在尝试这个:
prods.Remove(new stuff{ prodID = 1});
Run Code Online (Sandbox Code Playgroud)
它不起作用.
谢谢大家
Nol*_*rin 172
如果您的集合类型是a List<stuff>
,那么最好的方法可能如下:
prods.RemoveAll(s => s.ID == 1)
Run Code Online (Sandbox Code Playgroud)
这只对列表进行一次传递(迭代),因此应该比其他方法更有效.
如果您的类型更通用ICollection<T>
,那么如果您关心性能,可能有助于编写一个简短的扩展方法.如果没有,那么你可能会使用LINQ(调用Where
或Single
).
tan*_*ius 51
使用linq:
prods.Remove( prods.Single( s => s.ID == 1 ) );
Run Code Online (Sandbox Code Playgroud)
也许你甚至想要使用SingleOrDefault()
并检查元素是否存在......
编辑:
既然stuff
是一个结构,SingleOrDefault()
不会返回null.但它将返回默认值(stuff),其ID为0.如果您的普通 stuff-object 没有ID为0,则可以查询此ID:
var stuffToRemove = prods.SingleOrDefault( s => s.ID == 1 )
if( stuffToRemove.ID != 0 )
{
prods.Remove( stuffToRemove );
}
Run Code Online (Sandbox Code Playgroud)
如果你有 LINQ:
var itemtoremove = prods.Where(item => item.ID == 1).First();
prods.Remove(itemtoremove)
Run Code Online (Sandbox Code Playgroud)