如何在 C# 中将 Var 转换为 int[]



我正在使用linq从datagridview获取列值。一旦我有了列值(数字(,我就想要基于范围的记录计数这是我的代码 -

var column_values = radGridView1.Rows.Cast<Telerik.WinControls.UI.GridViewRowInfo>().Select(r => r.Cells["columnName"].Value);
int count = 0;
foreach(int i in columnvalues.ToList()){
 if(i > 0.1 and i < 0.5) {
    count++
}
}

但是我收到此错误

无法强制转换类型的对象 "System.Collection.Generic.List'1[System.Object]"键入 系统。可逆'。

我知道foreach条件是错误的,但无法弄清楚。这些数字也可以是十进制的。

还有一种直接的方法可以使用 linq 而不是使用 for 循环来做到这一点。

请帮忙。

如果值实际上是 int,则可以使用 .Cast()

foreach (int i in columvalues.Cast<int>())

如果它们是字符串,则可以解析它们:

foreach (int i in columvalues.Select(int.Parse))

只需更改您的选择即可使用 int。解析:

Select(r => int.Parse(r.Cells["columnName"].Value.ToString()));

然后你可以迭代整数,不需要ToList

foreach(var i in columnvalues)

您也可以使用Count方法摆脱foreach

var count = radGridView1.Rows.Cast<Telerik.WinControls.UI.GridViewRowInfo>()
                   .Select(r => int.Parse(r.Cells["columnName"].Value))
                   .Count(x => (your condition));

我把条件部分留给你,因为你在那里得到的条件永远不会true

最新更新