【问题标题】:Counting entries in a datagrid?计算数据网格中的条目?
【发布时间】:2012-07-03 23:19:57
【问题描述】:

我有一个数据网格,其中填充了来自 SQL 查询的数据集。 我想做的是计算某个条目出现了多少次,例如在第 3 列中,我想计算一个字符串在数据网格中重复的次数。有没有办法做到这一点,也许与 Linq?我最初尝试通过 SQL 查询来执行此操作:

SELECT Count(*) Occurences
From myTable
WHERE Column_name Like 'stringPattern'

但问题是数据库很大,我已经有返回的数据,所以希望不必重新查询数据库?

任何提示或建议将不胜感激。

彼得

【问题讨论】:

    标签: c# sql wpf linq datagrid


    【解决方案1】:

    下面的工作是否...

    原创

    SELECT Count(*) Occurences
    From myTable
    WHERE Column_name Like 'stringPattern'
    

    数据表

    var count = (from row in myTable.AsEnumerable()
                 where string.Equals(row["Column_name"].ToString(), "stringPattern")
                 select row).Count();
    

    【讨论】:

    • 我收到此错误:找不到源类型“System.Data.DataTable”的查询模式的实现。找不到“哪里”。
    • @Peter 现在意识到您正在使用 .NET DataSet 和 DataTable 类型,我已经更新了我的答案。
    【解决方案2】:

    如果您已经有了要从数据集中查询的表,则可以使用 LINQ。

    var count = myTable.AsEnumerable().Where(x => x["Column_name"] == "stringPattern").Count();
    

    【讨论】:

    • 原谅我,因为我还在学习,是不是像这样:var count = dataset.Tables[0].Where(x => x["Column_name"] == "stringPattern" ).Count();
    • 我收到以下信息:“System.Data.DataTable”不包含“Where”的定义,并且没有接受“System.Data.DataTable”类型的第一个参数的扩展方法“Where”可以被发现(您是否缺少 using 指令或程序集引用?)
    • @jsmith 我认为你只能在 .net 4.0 中做到这一点
    • 我认为你可能是对的,但是我很确定 DataTable 有一个 AsEnumerable()。
    猜你喜欢
    • 2013-02-11
    • 1970-01-01
    • 2013-02-25
    • 2010-11-15
    • 2023-02-20
    • 1970-01-01
    • 2014-02-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多