Count how many numbers is between a range in a List<strin
本文关键字:List lt strin in range numbers many is between Count how | 更新日期: 2023-09-27 18:04:34
我是c#初学者,我发现自己在Windows窗体应用程序中有一个问题,我正在使用Microsoft Visual c# 2010 Express。我有一个按钮,打开一个文件对话框,选择一个特定的Excel工作簿,然后检索第一列和第五列的值,像这样的字符串:
string x = {"120,123,125,128,130,140,157,189,220,230,243,250"}
然后我将这个字符串转换并添加到字符串列表中。下面是代码:
var y = string.Join(string.Empty, x).Split(',');
List<string> listX = new List<string>();
foreach (var x1 in y)
{
listX.Add(x1);
}
列表格式如下:
listX1[0] = "120";
listX1[1] = "123";
listX1[2] = "125";
以此类推。现在我有了这个方法来计算在123和150之间有多少个数字,它会给我5的数字(包括123)。使用的方法是这样的:
public static int Count(IList<int> set, int min, int max)
{
int count = 0;
foreach (int i in set)
if( i <= max && i >= min)
count++
return count;
}
这里的最小值是123,最大值是150。
现在我知道我不能使用这个方法,因为我的list (listX1)是一个字符串列表。如何使用c#计算最小和最大之间的数字?有人能帮我吗?
希望你能帮助我。多谢。
我相信你有字符串数组:
string[] x = { "120", "123", "125", "128", "130", "140", "157", "189", "220", "230", "243", "250" };
您必须将每个项目解析为int
,然后对它们进行排序,稍后您可以获得计数,如:
int start = 123;
int end = 150;
var result = x.Select(int.Parse)
.Count(r => r >= start && r < end);
如果你想使用int.TryParse
,那么你可以这样做:
int start = 123;
int end = 150;
int temp;
var result = x.Select(r => { return int.TryParse(r, out temp) ? temp : -1; })
.Count(r => r >= start && r < end);
这看起来像一个字符串数组。您需要去掉双引号以得到一个整数数组。从这里开始,您可以循环遍历数组并计算符合间隔的数字,或者使用LINQ或Lambda表达式