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#计算最小和最大之间的数字?有人能帮我吗?

希望你能帮助我。多谢。

Count how many numbers is between a range in a List<strin

我相信你有字符串数组:

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表达式