c# - 使用 .NET 中的 linq 计算 dataGridView 中列的不同值

标签 c# .net linq datagridview lambda

我需要在 dataGridView 中计算并显示不同/唯一的值。 我想像这样展示它,并且这段代码适用于列表。

        List<string> aryIDs = new List<string>();
        aryIDs.Add("1234");
        aryIDs.Add("4321");
        aryIDs.Add("3214");
        aryIDs.Add("1234");
        aryIDs.Add("4321");
        aryIDs.Add("1234");

        var result= aryIDs.GroupBy(id => id).OrderByDescending(id => id.Count()).Select(g => new { Id = g.Key, Count = g.Count() });

但是,当我尝试对 dataGridView 中的列使用相同的方法时,我收到一条错误消息,指出无法在我的 dataGridView 上使用 groupBy。

        DataGridView dataGridView1= new DataGridView();
        dataGridView1.Columns.Add("nr", "nr");
        string[] row1 = new string[] { "1234" };
        string[] row2 = new string[] { "4321" };
        string[] row3 = new string[] { "3214" };
        string[] row4 = new string[] { "1234" };
        string[] row5 = new string[] { "4321" };
        string[] row6 = new string[] { "1234" };

        object[] rows = new object[] { row1, row2, row3, row4, row5, row6 };

        foreach (string[] rowArray in rows)
        {
            dataGridView1.Rows.Add(rowArray);
        }

        var result = dataGridView1.GroupBy(id => id).OrderByDescending(id => id.Count()).Select(g => new { Id = g.Key, Count = g.Count() });

所以我的问题是,如何调整此 linq 语法以处理 dataGridView 中的列?如果可能的话,我根本不想使用列表。

最佳答案

这将适用于您的示例:

var result = dataGridView1.Rows.Cast<DataGridViewRow>()
    .Where(r => r.Cells[0].Value != null)
    .Select (r => r.Cells[0].Value)
    .GroupBy(id => id)
        .OrderByDescending(id => id.Count()) 
        .Select(g => new { Id = g.Key, Count = g.Count() });

关于c# - 使用 .NET 中的 linq 计算 dataGridView 中列的不同值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10899568/

相关文章:

c# - 字符串的正则表达式以数字开头,后跟字母

c# - 我对 C# 中的这个简单等式感到困惑

c# - 在 C# XML 中解析 XML 以获取特定内容

c# - Linq,将多个记录组合成逗号分隔的字符串,按不同值分组

c# - 如何在图片框中画圆和线?

c# - 我怎样才能退出这个递归循环?

.net - 将 WF 4 实例存储架构迁移到 WF 4.5 后无法运行工作流

c# - C# 中的 CS0649 错误

c# - 使用连接字符串连接到数据库以使用 LINQ

c# - 为什么我的字符串在凯撒密码期间发生变化?