繁体   English   中英

手动从集合中删除项目与使用Enumerable.C#除外

[英]Manually removing items from a collection vs using Enumerable.Except C#

要使用Except方法从自定义对象列表中删除对象,需要在对象上实现IEqualityComparer。 但是,仅在正常的foreach循环中删除对象是否不好?

我了解IEqualityComparer的概念并使用Except,但由于某种原因我无法使其正常工作,因此我只是手动删除了这些项目。 这被认为是不好的编程吗?

编辑:使用手动方式ID必须重写Equals和GetHashcode污染了我的视图模型-我猜这很不好吗?

通常,应避免在枚举时对集合进行更改。

我不能完全确定您最初的问题是什么,或者为什么需要以这种方式删除元素,但是问题却过于复杂了。 如果我理解正确,实际上您正在使用List<T> ,其中T是自定义类型。 如果是这种情况,则只需使用LINQ查询即可从列表中获取所需的值。

var newList = oldList.Where(x => x.PropertyName != unwantedValue);

您可以使用Enumerable.Except ,但应注意Enumerable.Except返回一个set ,也就是说,不允许重复值。

另外,据我所知,覆盖.Equals.GetHashCode不会污染视图模型。

资料来源:

http://msdn.microsoft.com/en-us/library/vstudio/bb336390(v=vs.100).aspx

除问题外可枚举

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM