在C#中的数组列表中查找数组的索引

本文关键字:数组 索引 查找 列表 | 更新日期: 2023-09-27 18:19:57

如果您有一个数组列表,如:

List<int[]> ListOfArrays = new List<int[]>();
ListOfArrays.Add(new int[] { 1, 1 });
ListOfArrays.Add(new int[] { 2, 1 });

您将如何在列表中找到{2,1}的索引?

我不想使用迭代循环。我想要一个简洁的方法,就像PaRiMaL RaJ在检查字符串列表中是否存在字符串数组时建议的方法:

list.Select(ar2 => arr.All(ar2.Contains)).FirstOrDefault();

(如果给定字符串数组的成员存在于字符串数组列表中,则上述代码将返回true)

在C#中的数组列表中查找数组的索引

var myArr = new int[] { 2, 1 };
List<int[]> ListOfArrays = new List<int[]>();
ListOfArrays.Add(new int[] { 1, 1 });
ListOfArrays.Add(new int[] { 4, 1 });
ListOfArrays.Add(new int[] { 1, 1 });
ListOfArrays.Add(new int[] { 2, 1 });
int index = ListOfArrays.FindIndex(l => Enumerable.SequenceEqual(myArr, l));

您可以为此使用SequenceEqual方法。请参阅MSDN:https://msdn.microsoft.com/en-us/library/vstudio/bb348567(v=vs.100).aspx

你可以试试这个:

List<int[]> ListOfArrays = new List<int[]>();
ListOfArrays.Add(new int[] { 1, 1 });
ListOfArrays.Add(new int[] { 2, 1 });
var chk = ListOfArrays.FindIndex(e => (e.SequenceEqual(new int[] { 2, 1 })));