Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 比较两个DataGridView_C#_Winforms_Datagridview - Fatal编程技术网

C# 比较两个DataGridView

C# 比较两个DataGridView,c#,winforms,datagridview,C#,Winforms,Datagridview,我在一个表单中有两个DataGridView。第一个,datagridview1包含列和数据: name IC EMAIL TELEPHONE ------------------------------------------------------ rOO 898989096677 AB@YAHOO.COM 018-9097878 datagridview2 name IC EMA

我在一个表单中有两个DataGridView。第一个,
datagridview1
包含列和数据:

name   IC              EMAIL             TELEPHONE  
------------------------------------------------------
rOO    898989096677    AB@YAHOO.COM      018-9097878
datagridview2

name   IC              EMAIL           TELEPHONE      ID 
-----------------------------------------------------------
rOO    898989096677    AB@YAHOO.COM    018-9097878    8787

我想询问有关如何比较两个datagridview的帮助,如图所示,我想比较一个datagridview到另一个datagridview的四列,看看是否有匹配的结果。例如,
roo
名称是否和另一个datagridview匹配,我希望将id(8787)中的值发送到另一个datagridview。

假设您使用包含示例中这4个属性的相同对象填充两个DataGrid。如果在第二个数据网格中有匹配的对象,则必须根据过滤器检查第一个数据网格中的选定行。使用Linq。如果是这样,则将所选项目的数据从第一个datagrid复制到第二个datagrid中的匹配元素中。我很惊讶,您将需要手动执行所有这些步骤,因为没有方法可以比较两个数据网格,您只需设置一些过滤器,工作就完成了。你会有一些工作要做,但并不难。祝你好运。

有一个非常简单的解决方案来比较两个datagridview并在第三个datagridview中显示它们的结果

        for (int i = 0; i < dtView1.Rows.Count; i++)
        {
            for (int j = 1; j < dtView1.Columns.Count; j++)
            {

                if ((dtView1.Rows[i][j]) == (dtView2.Rows[i][j]))
                {
                   // here you can add your own logic
                }
                else
                {
              // here you can add your own logic
            }
        }
for(int i=0;i

|史蒂夫的答案不正确,无法编译

以下是我的解决方案:

        int x = 0;
        int y = 0;
        int i = -1;
        int z = 0;
            foreach (DataGridViewRow row in dataGridView1.Rows)
            {
                    i++;

                if ((dataGridView1.Rows[i].Cells[i].Value) == (dataGridView2.Rows[z].Cells[i].Value))
                {
                    x++;
                }
                else
                {
                    y++;
                }
            if (z < dataGridView2.Rows.Count)
            {
                z++;
            }
            if(z == dataGridView2.Rows.Count)
            {
                z--; //subtract 1 from the total count because the datagrid is 0 index based.
            }

     MessageBox.Show("Matched: " + x.ToString() + "\r\n" + "Not Matched: " + y.ToString());
intx=0;
int y=0;
int i=-1;
int z=0;
foreach(dataGridView1.Rows中的DataGridViewRow行)
{
i++;
if((dataGridView1.Rows[i].单元格[i].值)==(dataGridView2.Rows[z].单元格[i].值))
{
x++;
}
其他的
{
y++;
}
if(z
datagrid上的foreach循环将在每一行中循环,然后您可以选择一个单元格,甚至可以选择要比较的单元格。此代码有点长,我相信它可以简化,但是它可以完成这项工作

目前,这将检查datagrid 2中的每一行是否与datagrid 2中的匹配,仅在单个列上


它用于记住datagrid的导入是基于0索引的。datagrid的Count属性给出一个[1]基于索引的计数,因此我们需要减去datagrid 2上的最后一次迭代。

具体问题是什么?您知道如何访问单元格中包含的值?您知道如何比较值?您知道如何设置值?如果两个datagrid视图都指向同一数据源,则应该同步。最好描述您的要求从用户的角度来看。