我有一个具有属性的对象集合,我想删除linq中(比如)值为0
的所有后续对象。
public class Object
{
public Object(){}
public int Property {get; set;}
}
如果我有一个物品清单:
new Object(){ Property = 1};
new Object(){ Property = 0};
new Object(){ Property = 9};
new Object(){ Property = 7};
new Object(){ Property = 0}; // "trailing zero"
new Object(){ Property = 0}; // "trailing zero"
new Object(){ Property = 0}; // "trailing zero"
如何删除此列表中的“尾随零”?我不想删除带有零的所有属性,但是如果属性值为零的列表中的任何对象后面没有更大的属性值,我想删除该列表中的任何对象。
最佳答案
有限尺寸序列的标准溶液-反向,从开始处移除,反向:
var withoutTail = sequence
.Reverse()
.SkipWhile( x => x == 0) // whatever condition you need
.Reverse();
这是非常不理想的,所以如果您实际上有真正的集合(即
List
),最好从最后一个索引开始删除项。