如何从List <string []>中删除元素并将其放在列表的末尾?</string []>

时间:2014-05-30 12:38:07

标签: list c#-4.0

我有一个

List<string[]> list which contains this data:

SEC Code (list[0][0])
Status   (list[0][1])
ALL (list[1][0])
None (list[1][1])

数据是这样的:

SEC Code ALL
Status   None 

我想删除&#34; SEC Code&#34;和&#34;所有&#34;并将它们放在列表的末尾。我试过list.Remove,但它适用于

List<string> and not for List<string[]>.

1 个答案:

答案 0 :(得分:1)

  

我尝试了list.Remove,但它适用于List<string>,而不适用于List<string[]>

这是因为list.Remove使用数组不覆盖的Equals(object)来比较相等的项。为了使数组从Equals(object)的角度看被认为等于另一个数组,它必须是相同的数组实例。

为了从内部数组中删除"SEC Code""ALL",您需要构建一个缩短一个项目的新数组,如下所示:

var toRemove = new HashSet<string> {"SEC Code", "ALL"};
var newList = list.Select(array =>
    array.Where(item => !toRemove.Contains(item)).ToArray()
).ToList();

上面的代码生成了一个字符串数组列表,其中删除了所有"SEC Code""ALL"字符串。