如何在C#中的Datagridview中计算重复项 [英] How to Count Duplicates in Datagridview in C#

查看:145
本文介绍了如何在C#中的Datagridview中计算重复项的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

该怎么做?

我已经在如何使用LINQ计算列表中的重复项

 var list = new List<string> { "a", "b", "a", "c", "a", "b" };

        var q = from x in list
                group x by x into g
                let count = g.Count()
                orderby count descending
                select new { Value = g.Key, Count = count };
        foreach (var x in q)
        {
            MessageBox.Show("Value: " + x.Value + " Count: " + x.Count);
        }

但是如何修改它以计算datagridview中的重复项?例如datagridview1 [7,i],其中i是datagriview中的行数。

But how to modify it to count duplicates in datagridview? For example datagridview1[7,i] where i is number of rows in datagriview.

EDIT

现在我的代码看起来像这样:

Now my code is looking like that:

      var list = dataGridView1.Rows.OfType<DataGridViewRow>()
       .GroupBy(x => x.Cells["TestValues"].Value)
       .Select(g => new { Value = g.Key, Count = g.Count(), Rows = g.ToList() })
       .OrderByDescending(x => x.Count);

        var q = from x in list
                group x by x into g
                let count = g.Count()
                orderby count descending
                select new { Value = g.Key, Count = count };

        foreach (var x in q)
        {
           // dataGridView1[7, x].Value.ToString();

            MessageBox.Show("Value: " + x.Value + " Count: " + x.Count +"Rows: " );

        }


推荐答案

类似这应该起作用:

var list = myDataGridView.Rows.OfType<DataGridViewRow>()
           .Select(x => x.Cells["MYCOLUMN"].Value.ToString());
var q = from x in list
    group x by x into g
    let count = g.Count()
    orderby count descending
    select new { Value = g.Key, Count = count };

其中 MYCOLUMN

EDIT:

此代码返回包含重复项的行列表的项目列表:

this code returns a list of items that contains also the list of rows with the duplications:

var q = myDataGridView.Rows.OfType<DataGridViewRow>()
        .GroupBy(x => x.Cells["MYCOLUMN"].Value.ToString())
        .Select(g => new {Value=g.Key, Count=g.Count(), Rows=g.ToList()})
        .OrderByDescending(x => x.Count);

因此,如果您有5行,例如:

so if you have 5 rows e.g. :

ID     MYCOLUMN
 0         A
 1         B
 2         C
 3         A
 4         B   

q 将包含3个元素:

 Key="A", Count=2, Rows={ [0 - A] [3 - A]}
 Key="B", Count=2, Rows={ [1 - B] [4 - B]}
 Key="C", Count=1, Rows={ [2 - C] }

这篇关于如何在C#中的Datagridview中计算重复项的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆