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

C# 如何在C中将Var转换为int[]#,c#,.net,linq,datagridview,C#,.net,Linq,Datagridview,我使用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()){

我使用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++
}
}
var column\u values=radGridView1.Rows.Cast().Select(r=>r.Cells[“columnName”].Value);
整数计数=0;
foreach(columnvalues.ToList()中的int i){
如果(i>0.1,i<0.5){
计数++
}
}
但我得到了这个错误

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

我知道foreach条件是错误的,但我无法理解。数字也可以是十进制的

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


请提供帮助。

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


只需将选择更改为使用int.Parse:

Select(r => int.Parse(r.Cells["columnName"].Value.ToString()));
然后可以迭代整数,无需
ToList

foreach (int i in columvalues.Cast<int>())
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));
var count=radGridView1.Rows.Cast()
.Select(r=>int.Parse(r.Cells[“columnName”].Value))
.Count(x=>(您的条件));

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

一个数字怎么能同时小于10和大于50?难道
columnvalues
意味着与
column\u values
相同吗?您是否费心去找出其中一个的实际运行时类型?变量名是typo,但在实际代码中它是正确的。此外,所有值都是十进制值。如果列表中只有十进制值,请将Value对象直接转换为十进制
var column_values=radGridView1.Rows.Cast().Select(r=>(十进制)r.Cells[“columnName”].Value)之后,您可以获得这样的计数:so
var Count=column\u values.Count(\u=>\ u>0.1&&u<0.5)它给出了指定的强制转换在Var count=…处不正确的错误。我得到的错误是无法在此处将obj转换为字符串-int.Parse(r.Cells[“columnName”].Value)@jamesandy Add
.ToString()
之后
Value
。我得到错误“输入字符串格式不正确”-var count=radGridView1.Rows.Cast().Select(r=>int.Parse(r.Cells[“column name”].ToString()).count(x=>x<0.1);那么,列中没有有效的整数值,或者其中一些值为null或空。没有null或空值。这些值都是十进制的。我得到一个错误——“指定的强制转换对强制转换无效。”这些值实际上是十进制值。
var count = radGridView1.Rows.Cast<Telerik.WinControls.UI.GridViewRowInfo>()
                   .Select(r => int.Parse(r.Cells["columnName"].Value))
                   .Count(x => (your condition));