C#列表,在最后一个非空元素之后*删除所有空值

时间:2018-09-14 23:45:02

标签: c# .net list winforms linq

我有一个字符串列表,例如(C#):

new List<string> { "string1", null, null "string2", "string3", null, null, null }

我有很多这样的人,都使用不同数量的字符串和null,其中每个字符串可以位于不同的位置,并且每个列表的列表长度都不相同,也不一定是字符串列表。

我如何删除最后一个字符串之后,最后一个非null值之后的其余null值,并保持它们之间和前面的null值?

谢谢!

/弗雷德曼

2 个答案:

答案 0 :(得分:6)

从最后一项到开头检查您的列表,并删除空值,直到达到非空值为止:

List<string> list = new List<string> { "string1", null, null "string2", "string3", null, null, null };

for(int i=list.Count - 1; i>=0; i--)
{
     if(list[i]==null) list.RemoveAt(i);
     else break;
}

答案 1 :(得分:-1)

Linq方式:

int position = list.IndexOf(
          list.Where(x =>x!=null).OrderByDesc.FirstOrDefault());
return position == list.Count -1 ? list: list.RemoveRange(position+1, list.Count - 1);