我有一个具有属性的对象集合,我想删除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),最好从最后一个索引开始删除项。

07-24 09:38
查看更多