C# 如何在C中将Var转换为int[]#
我使用linq从datagridview获取列值。一旦有了列值(数字),我就需要基于范围的记录计数 这是我的密码-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()){
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)代码>之后,您可以获得这样的计数:sovar 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));