Предположив У меня есть List<int>
его легко найти целое число, позволяет сказать 6
Как искать в междунар [] в списке <int[]> и удалить элемент в C#
List<int> list = new List<int>(){1, 2, 3, 4, 5};
if(list.Contains(6))
Console.Write("6 exists");
, но как бы я искать int[]
в List<int[]>
List<int[]> example = new List<int[]>();
example.Add(new int[4]{0,1,2,3});
example.Add(new int[4]{10,11,12,13});
example.Add(new int[4]{20,21,22,23});
Как искать {0,1,2,3}
, а также удалить этот индекс в списке?
int[] toFind = new int[4]{0,1,2,3};
foreach (int[] item in list)
{
if(item.Length == toFind.Length)
{
bool found = false;
for(int i=0; i < item.Length;i++)
{
if(item[i] == toFind[i])
{
found = true;
}
else
{
found = false;
}
}
}
}
Я пытался сперва сравнить желаемую длину предмета с каждой длиной элемента, сравнить каждый элемент массива. Там должен быть лучший способ сделать это ...
Обратите внимание, что это будет относительно медленным для поиска больших источников данных. [Используя алгоритм Бойера-Мура] (http://stackoverflow.com/questions/16252518/boyer-moore-horspool-algorithm-for-all-matches-find-byte-array-inside-byte-arra) может дать вам значительный прирост производительности. –
@ScottChamberlain Я согласен, это не самый быстрый способ. Возможно, OP указывает в вопросе, что означает «лучший способ»: быстрее, читабельнее или что-то еще. –
да, на самом деле хотелось бы более быстрый способ – Edgar