【问题标题】:Find the index in an array of lists在列表数组中查找索引
【发布时间】:2023-03-15 21:08:01
【问题描述】:

我有一个以下数组。我想找到列表中包含 M 的数组的索引,所以它应该给我 2。

 Array    List
    0 - > B, P , C
    1 - > U, O, L
    2 - > I, N, M

List<string>[] final = new List<string>[3];

我尝试了以下方法:

Array.IndexOf(final,"M")

但它不起作用并返回 - 1 因为第二个参数是一个列表。请不要使用 Linq

【问题讨论】:

    标签: c# arrays list


    【解决方案1】:

    Array.IndexOf 将遍历一维数组并且永远找不到搜索 string,因为它将与 List&lt;string&gt; 进行比较。您必须遍历数组中的 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;
    }
    

    【讨论】:

      【解决方案2】:

      由于您的“要搜索的项目”是列表的子项目,您首先需要搜索每个列表。这可以通过 Linq 完成。将 Linq Query 的结果与 Array.IndexOf 结合,可以发现结果为

      var result  =  Array.IndexOf(final,final.FirstOrDefault(x => x.Contains(searchString)));
      

      【讨论】:

        【解决方案3】:

        只需提供一些替代方案,如果您想放弃数组,您可以使用标准 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
        

        【讨论】:

          【解决方案4】:

          请记住,您在名为 final 的数组的每个索引处都有一个 List&lt;string&gt;,因此您不能使用 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;
          }
          

          【讨论】:

            猜你喜欢
            • 2017-05-07
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-11-05
            • 2021-05-30
            • 2018-07-21
            • 2014-05-08
            相关资源
            最近更新 更多