循环遍历x个数组

时间:2012-01-22 23:31:20

标签: c# arrays

如何遍历x个数组并访问所有数组中所有单元格的所有组合?这里的问题是里面可能有一些项目的x个数组。例如,

List<List<string>> _arrays = GetArrayInformation();

我想比较每个数组中的所有字符串与所有其他数组以及每个数组中的字符串。我喜欢和

一样使用吗?
while(i < _arrays.Count)

感谢您的回答。答案看似简单,但是当你想到它时有点棘手和困难。

更新

感谢您的回答。我可以使用像

这样的3个数组来做到这一点
for(int i = 0; i < _arrays[0].Count; i++) {
 for(int l = 0; l < _arrays[1].Count; l++) {
  for(int m = 0; m < _arrays[2].Count; m++) {
    string _hello = _arrays[0][i] + "|" + _arrays[1][l] + "|" + _arrays[2][m];
  }
 }
}

因为我有动态数量的数组,所以很棘手。

3 个答案:

答案 0 :(得分:1)

foreach(var array in _arrays)
{
   foreach(var s in array) 
   {
       foreach(var otherArray in _arrays)
       {
           if(otherArray == array) continue;
           if(otherArray.Contains(s)) {}  // not sure what you want to do
       }
   }
}

这会循环遍历每一个字符串,看它是否在任何其他数组中....这是直截了当的方法,但效率不高,会重复工作。

答案 1 :(得分:1)

这里没有足够的信息

如果您需要查找少数阵列中存在的元素,您将使用以下内容:

var multipleWords = _arrays
    .SelectMany(items => items.Distinct())
    .GroupBy(item => item)
    .Select(group => new {Item = group.Key, Count = group.Count()})
    .Where(item => item.Count > 1)
    .Select(item => item.Item)
    .ToArray();

multipleWords将包含存在于两个或多个数组中的所有这些数组中的每个单词

答案 2 :(得分:0)

您可以使用递归搜索功能。

   public Search<T>(object o, string comparestring)
   {
         if(o is List<string>)
         {
         //Compare to your string
         }
         else
         {
             //Call this search function with the type of the object in the list.
             //Will iterate through all of your strings recursively.
             Type t = o.GetType().GetGenericArguments()[0];
             foreach( object osub in (T)o)
                 Search<t>( ((t)o),comparestring)
         }

    }