我有以下查询,它采用 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/