如何从列表列表中的重复值转义#
How to escape from duplicates values in List of Lists c#
var _array = new int[] { -4, -2, -1, 1, 2, 4 };
var keepPerms = new List<List<int>>();
var _l = new List<int>();
var c = 0;
while (c != 2)
{
for (int i = 0;i < _array.Length; i++)
{
_l.Add(_array[i]);
List<int> _sort = _l.OrderBy(s => s).ToList();
if (!keepPerms.Contains(_sort))
keepPerms.Add(_sort);
}
_l.Clear();
c++;
}
foreach (var item in keepPerms)
{
{
Console.WriteLine(String.Join(" ", item));
}
Console.WriteLine();
}
Console.WriteLine();
我得到的输出:
-4
-4 -2
-4 -2 -1
-4 -2 -1 1
-4 -2 -1 1 2
-4 -2 -1 1 2 4
-4
-4 -2
-4 -2 -1
-4 -2 -1 1
-4 -2 -1 1 2
-4 -2 -1 1 2 4
我需要的输出:
-4
-4 -2
-4 -2 -1
-4 -2 -1 1
-4 -2 -1 1 2
-4 -2 -1 1 2 4
这是一个方法原型,我需要在其中找到某些序列的子集。主要问题是,在执行此方法后,我得到了子集的副本。有没有办法获得列表的原始值,尽管我调用了它的次数?你能建议更好的方法来找到这个列表的原始值吗?
因为条件while(c != 2)你得到两个结果,你可以把它换成while(c != 1) 并且会起作用,或者您可以删除 while,因为它对您的情况没有真正帮助。
List.Contains() 使用默认的相等比较器。 List<int> a == List<int> b
仅当它是相同的对象时。
您应该在 Contains()
中使用自定义相等比较器或使用 Any + SequenceEqual
:
if (!keepPerms.Any(item => item.SequenceEqual(_sort)))
keepPerms.Add(_sort);
var _array = new int[] { -4, -2, -1, 1, 2, 4 };
var keepPerms = new List<List<int>>();
var _l = new List<int>();
var c = 0;
while (c != 2)
{
for (int i = 0;i < _array.Length; i++)
{
_l.Add(_array[i]);
List<int> _sort = _l.OrderBy(s => s).ToList();
if (!keepPerms.Contains(_sort))
keepPerms.Add(_sort);
}
_l.Clear();
c++;
}
foreach (var item in keepPerms)
{
{
Console.WriteLine(String.Join(" ", item));
}
Console.WriteLine();
}
Console.WriteLine();
我得到的输出:
-4
-4 -2
-4 -2 -1
-4 -2 -1 1
-4 -2 -1 1 2
-4 -2 -1 1 2 4
-4
-4 -2
-4 -2 -1
-4 -2 -1 1
-4 -2 -1 1 2
-4 -2 -1 1 2 4
我需要的输出:
-4
-4 -2
-4 -2 -1
-4 -2 -1 1
-4 -2 -1 1 2
-4 -2 -1 1 2 4
这是一个方法原型,我需要在其中找到某些序列的子集。主要问题是,在执行此方法后,我得到了子集的副本。有没有办法获得列表的原始值,尽管我调用了它的次数?你能建议更好的方法来找到这个列表的原始值吗?
因为条件while(c != 2)你得到两个结果,你可以把它换成while(c != 1) 并且会起作用,或者您可以删除 while,因为它对您的情况没有真正帮助。
List.Contains() 使用默认的相等比较器。 List<int> a == List<int> b
仅当它是相同的对象时。
您应该在 Contains()
中使用自定义相等比较器或使用 Any + SequenceEqual
:
if (!keepPerms.Any(item => item.SequenceEqual(_sort)))
keepPerms.Add(_sort);