我有一个以下数组。我想找到列表中有M的数组的索引,所以应该给我2。
??
我尝试了以下操作:
Array List
0 - > B, P , C
1 - > U, O, L
2 - > I, N, M
List<string>[] final = new List<string>[3];
但是它不起作用,它返回-1,因为第二个参数是一个列表。请不要使用Linq
答案 0 :(得分:1)
Array.IndexOf
将遍历一维数组,并且永远不会找到搜索string
,因为它将与List<string>
进行比较。您将必须遍历数组中的strings
列表:
public static int FindLetter(IList<string>[] arr, string search)
{
for(int i = 0; i < arr.Length; ++i)
{
if(arr[i].Contains(search))
{
return i;
}
}
return -1;
}
答案 1 :(得分:0)
由于“搜索项”是列表的子项,因此您首先需要搜索每个列表。这可以通过Linq完成。将Linq Query的结果与Array.IndexOf结合起来,您可以将结果查找为
var result = Array.IndexOf(final,final.FirstOrDefault(x => x.Contains(searchString)));
答案 2 :(得分:0)
只需提出一些替代方法,如果您想抛弃阵列,则可以使用标准的 Linq 方法
实现以下目标 var final = new List<List<string>>();
var item = final.FirstOrDefault(x => x.Contains("M"));
// do stuff with item result
var index = final.FindIndex(x => x.Contains("M"));
// do stuff with the index
答案 3 :(得分:0)
请记住,在名为 final 的数组的每个索引处都有一个List<string>
,因此您不能使用Array.IndexOf
,必须搜索在每个索引处分别键。以下代码是您要实现的工作示例:
public static int SearchKey(List<string>[] array, string key)
{
int index = 0;
foreach(List<String> i in array)
{
if(i.Contains(key))
{
return index;
}
index++;
}
return -1;
}