c# 如何将值与二维数组进行比较

标签 c# arrays

int[] a = new int[] { 1, 2, 3, 4 };
int[] b = new int[] { 5, 6, 1, 2, 7, 8 };
int Count = 0;
for (int i = 0; i < a.Length; i++)
{
     for (int j = 0; j < b.Length; j++)
     {
         if (a[i] == b[j])
         { 
             Count++; 
             break; 
         }
     }        
 } 

Console.WriteLine(Count);
Console.ReadLine();    

上面是一个简单的程序,可以搜索两个数组并找到它们之间的重复项。但是,我在将第一个数组设为二维数组时遇到了困难,因为我在运行“索引超出数组边界”下方的代码时遇到错误。我真的不知道该怎么做,如果有任何帮助,我将不胜感激。

int[][] a = {new int[] { 1, 2, 3, 4 }, new int[] { 3, 9, 9 }};      
int[] b = new int[] { 5, 6, 1, 2, 7, 8 };
int Count = 0;
for (int i = 0; i < a.Length; i++)
{
     for (int j = 0; j < b.Length; j++)
     {
         if (b[j] == a[i][j])
         { 
             Count++; 
             break; 
         }
     }
} 

Console.WriteLine(Count);
Console.ReadLine();

最佳答案

我假设您想在二维数组和一维数组之间查找重复项。

      int[][] a = { new int[] { 1, 2, 3, 4 }, new int[] { 3, 9, 9 } };
        int[] b = new int[] { 5, 6, 1, 2, 7, 8 };
        int Count = 0;
        for (int h = 0; h < a.Length; h++)
        {
            for (int i = 0; i < a[h].Length; i++)
            {
                for (int j = 0; j < b.Length; j++)
                {
                    if (b[j] == a[h][i])
                    {
                        Count++;
                        break;
                    }
                }
            }
        }

或者在 Linq 中 ;)

int Count = (from i in a from j in i from k in b where k == j select j).Count();

= 在 a2 和 b 之间找到 2 个重复项?

为新规范编辑

为每个二维数组元素存储重复项的第二次编辑。

   var duplicates = new List<int>();
        foreach (var i in a)
        {
            var duplicate = 0;
            foreach (var j in i)
            {
                foreach (var k in b)
                {
                    if (k == j)
                    {
                        duplicate++;
                    }
                }
            }
            duplicates.Add(duplicate);
        }

或者再次 linq ;)

var duplicates = a.Select(i => (from j in i from k in b where k == j select j).Count()).ToList();

更新 3: 对于您选择的代码格式:

var duplicates = new List<int>();
        for (int h = 0; h < a.Length; h++)
        {
            var duplicate = 0;
            for (int i = 0; i < a[h].Length; i++)
            {
                for (int j = 0; j < b.Length; j++)
                {
                    if (b[j] == a[h][i])
                    {
                        duplicate++;
                        break;
                    }
                }
            }
            duplicates.Add(duplicate);
        }

添加了重复输出:

     for (int d = 0; d < duplicates.Count; d++)
        {
            Console.WriteLine(duplicates[d]);
        }

关于c# 如何将值与二维数组进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29292765/

相关文章:

c# - 使用 EWS 和 OAuth 读取邮箱时禁止 403

c# - 用于将来在当前线程上执行代码的 PostMessage 的 C# 等效项是什么?

javascript - React,在添加新项目时更新数组总计数状态

javascript - getElementbyId 的函数数组

c++ - 在 O(logn) 中计算 C++ 中元素的下限

php - Android 从数据库获取数据不起作用(php + json + mysql)

c# - 反转图形

c# - 如何删除 EF 代码优先数据库中的子一对多相关记录?

javascript - 在 Javascript 中对嵌套数组使用拼接

c# - 使用 HttpClient 发送具有不同 header 的请求