过滤具有整数值的数组

时间:2011-04-06 18:24:47

标签: c# arrays

我有一个值为{ "01.0", "01.4", "01.5", "0.20", "02.5", "02.6", "03.0", "03.2" }的字符串数组 如何使用C#过滤整数值(1,2,3)?

4 个答案:

答案 0 :(得分:3)

首先执行select将字符串值转换为小数。然后使用剩余函数来查找哪些值在除以1时具有零余数。这应该只得到整数值。

var array = new[]{"01.0", "01.4", "01.5", "02.0", "02.5", "02.6", "03.0", "03.2"};

array.Select(i => Decimal.Parse(i)).Where(d => Decimal.Remainder(d, 1) == 0);

答案 1 :(得分:3)

将字符串解析为浮点数,只选择那些整数并抛弃重复的条目:

var input = new[] { "01.0", "01.4", "01.5", "0.20", "02.5", 
                    "02.6", "03.0", "03.2" };
var integers = input.Select(i => 
                         double.Parse(i,
                         System.Globalization.CultureInfo.InvariantCulture))
                    .Where(d => d == (int)d)
                    .Distinct().ToArray();

回答经过编辑,考虑到OP后来的评论。

答案 2 :(得分:0)

只要数组是字符串,或者可以转换为字符串,就可以使用int.Parse(array [here])。

答案 3 :(得分:0)

var array = new[] { "01.0", "01.4", "01.5", "02.0", "02.5", "02.6", "03.0", "03.2" };
int foo;
var integers = (from a in array where decimal.Remainder(decimal.Parse(a), 1) == 0 select (int)decimal.Parse(a));
foreach (var integer in integers)
{
    Console.WriteLine(integer);
}
Console.ReadLine();