[英]Remove object from Collection
我有一個對象集合,我希望根據函數調用刪除一些對象,這些函數返回true或false。 請參見下面的示例代碼片段-
for each(MyClass obj in Objects)
{
if(!ValidateObject(obj)
{ Objects.Remove(obj); }
}
我不想在這里使用循環。 上述樣本需要一個班輪代碼。 提前致謝。
枚舉時不能修改集合。
嘗試使用Linq:
var validObjects = Objects.Where(z => ValidateObject(z));
畢竟,類型為IEnumerable<T>
, ICollection<T>
的集合是不可能的,因此無法根據某些條件刪除項目。
但是您可以創建一個擴展方法,如下所示:
public static void CollectionsExtensions
{
public static void RemoveInvalidItems(this ICollection<MyClass> some)
{
foreach(MyClass item in some.ToList())
{
if(!new Validator().ValidateObject(item)) // Your class having your validation method
{
some.Remove(item);
}
}
}
}
因此,最終,您可以將循環轉換為將無效對象刪除為:
someCollectionOfMyClass.RemoveInvalidItems();
摘要:您可以為實現ICollection<MyClass>
任何集合在一行中刪除所有無效項,其中包括:
IList<T>
List<T>
使用此過濾掉有效的對象:
var validObjects = Objects.Where(t=>ValidateObject(obj));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.