如何从另一个List <int []>中删除List <int []>

时间:2015-06-23 09:52:53

标签: c# arrays list

这是我上一个问题的后果 How to remove int[] from List<int[]>?

我现在正在尝试删除List int []中的int []列表。

list_item2

我尝试将trash2中的所有int []添加到trash数组,然后从trash2数组中删除具有相同值的项,但是它只从trash2中删除第一个int []。

是他们从List数组中删除List数组的任何其他方法吗?

2 个答案:

答案 0 :(得分:5)

这是你的答案

int[] t1 = new int[] { 0, 2 };
List<int[]> trash = new List<int[]>()
{
    t1,
    new int[] {0,2},
    new int[] {1,0},
    new int[] {1,1}
};
List<int[]> trash2 = new List<int[]>()
{
    new int[] {0,1},
    new int[] {1,0},
    new int[] {1,1}
};

Console.WriteLine(trash.Count + "");//Count = 4
trash.RemoveAll(a => trash2.Any(b => b.SequenceEqual(a)));
Console.WriteLine(trash.Count + "");//Count = 2

在之前的回答https://stackoverflow.com/a/30997772/1660178

中提到了一些 SequenceEqual 逻辑

答案 1 :(得分:0)

另一种方法涉及使用public void setValuesOfAngleUnits() { valuesOfAngleUnits.put("Arc minute", 0); valuesOfAngleUnits.put("Arc second", 1); valuesOfAngleUnits.put("Degree", 2); valuesOfAngleUnits.put("Gon", 3); valuesOfAngleUnits.put("Grad", 4); valuesOfAngleUnits.put("Mil (Nato)", 5); valuesOfAngleUnits.put("Mil (Soviet Union)", 6); valuesOfAngleUnits.put("Octant", 7); valuesOfAngleUnits.put("Quadrant", 8); valuesOfAngleUnits.put("Radian", 9); valuesOfAngleUnits.put("Revolution", 10); valuesOfAngleUnits.put("Sextant", 11); valuesOfAngleUnits.put("Sign", 12); valuesOfAngleUnits.put("Turn", 13); } 扩展方法和自定义.Except。以下代码也会生成您需要的结果:

IEqualityComparer