c# - 计算 int 时 LINQ 查询失败

标签 c# linq

我有以下查询,它采用 DataTable 并计算值在 countField 列中出现的次数。

var countField = "class"
var query = from row in myDataTable.AsEnumerable()
            group row by row.Field<string>(countField)
            into sumry
            orderby sumry.Count() descending
            select new
            {
                Text = sumry.Key,
                CountofRows = sumry.Count()
            };

这按预期工作,除非该列包含十进制值。我对 linq 不够熟悉,不知道要更改什么以允许它计算十进制值的实例。

我怎样才能使这个语句更健壮,以便它适用于指定列中包含的任何数据类型?

最佳答案

您可以使用DataRow 的 索引器获取值并将其转换为string:

var query = from row in myDataTable.AsEnumerable()
        group row by row[countField].ToString()
        into sumry
        orderby sumry.Count() descending
        select new
        {
            Text = sumry.Key,
            CountofRows = sumry.Count()
        };

这对所有类型都应该按预期工作。

关于c# - 计算 int 时 LINQ 查询失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26936478/

相关文章:

c# - 通过 ILGenerator 调用带谓词表达式的 LINQ

c# - 解析 JSON 轮负值

c# - 何时开始使用 IL 而不是高级语言

c# - 文件被复制到 SysWOW64 而不是 System32

c# - 字符串 C# 中 List<string> 的出现次数

c# - 在 Linq 查询中调用方法

c# - 如何计算两个坐标之间的距离

c# - 如何从自定义 AuthorizeAttribute 返回带有模型的 PartialView

c# - 从类中的列表属性中删除元素

c# - 如何将嵌套对象从一种类型转换为另一种类型