【发布时间】:2023-03-20 23:35:01
【问题描述】:
我需要使用 LINQ 针对数据表创建动态报告。在用户指定给定的复杂查询之前,数据表的内容是未知的。如果字段已知,则以下 LINQ 查询将起作用:
var groups = results.AsEnumerable();
var groupList = from g in groups
group g by g.Field<string>(column) into Grup
select new {
GroupedBy = Grup.Key,
CountValue = Grup.Count(r=>r.Field)<int>(countColumn))
};
但是,由于我不知道字段类型,当列是整数类型(或不同于字符串)时,代码将失败:
group g by g.Field<string>(column) into Grup
因为它不能将 int 转换为 string。错误如下:
无法将“System.Int32”类型的对象转换为“System.String”类型
关于如何解决此问题的任何建议?我试图使用以下方法确定列的数据类型:
results.Columns[column].DataType
然后使用数据类型进行转换,但这显然不起作用。类似的东西:
group g by g.Field<results.Columns[column].DataType>(column) into Grup
【问题讨论】:
-
在您的选择中使用 Grup 而不是 Grupi。
-
Grup / Grupi 只是一个错字,因为我缩短了很多代码以将其发布在这里。我现在编辑它。问题依然存在。