我有一个列表,列出了我的对象:
List<MyObj> list = new List<MyObj>();
我的函数收到MyObj作为参数,我想从列表中删除该对象,如这里的建议:c#从列表中删除项目
private void remove(MyObj obj)
{
var itemToRemove = list.Where(x => x.fileName == obj.fileName);
if (itemToRemove != null)
list.Remove(itemToRemove);
}
收到编译器错误:
无法从“ System.Collections.Generic.IEnumerable”转换为“ namespace.MyObj”
Where()
返回一个 IEnumerable<>
尝试这个:
private void remove(MyObj obj)
{
var itemToRemove = list.Where(x => x.fileName == obj.fileName);
if (itemToRemove.Any())
list.Remove(itemToRemove.First());
}
更好的是,因为您正在使用List<>
:
list.RemoveAll(x => x.fileName == obj.fileName);
编辑
从下面的评论来看,其他解决方案同样可行。选择您的毒药,尽管很自私(也许很明显),我更喜欢该RemoveAll
方法的可读性和简单性:
针织物:
list = list.Where(x => x.filename != obj.filename).ToList();
耶隆·范·朗根(Jeroen van Langen):
var itemToRemove = list.Where(x => x.fileName == obj.fileName).FirstOfDefault();
if (itemToRemove != null)
list.Remove(itemToRemove);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句