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

时间:2017-04-03 19:40:29

标签: 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()){
 if(i > 0.1 and i < 0.5) {
    count++
}
}

但我收到此错误

  

无法投射类型的对象   键入'System.Collection.Generic.List`1 [System.Object]'   system.IConvertible”。

我知道foreach条件错了但无法弄明白。数字也可以是小数。

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

请帮忙。

2 个答案:

答案 0 :(得分:0)

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

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

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

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

答案 1 :(得分:0)

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

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

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

foreach(var i in columnvalues)

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

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

我将条件部分留给您,因为您在那里的条件永远不会是true