这是我上一个问题的后果 How to remove int[] from List<int[]>?
我现在正在尝试删除List int []中的int []列表。
list_item2
我尝试将trash2中的所有int []添加到trash数组,然后从trash2数组中删除具有相同值的项,但是它只从trash2中删除第一个int []。
是他们从List数组中删除List数组的任何其他方法吗?
答案 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
中提到了一些 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