用 C# 计算 List<string> 中的范围之间有多少个数字

Posted

技术标签:

【中文标题】用 C# 计算 List<string> 中的范围之间有多少个数字【英文标题】:Count how many numbers is between a range in a List<string> with C# 【发布时间】:2014-05-22 15:51:26 【问题描述】:

我是初学者 C# 程序员,我发现自己在使用 Microsoft Visual C# 2010 Express 的 Windows 窗体应用程序中遇到问题。我有一个按钮,可以打开一个文件对话框来选择一个特定的 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。

现在我知道我不能使用这种方法,因为我的列表 (listX1) 是一个字符串列表。如何使用 C# 计算最小值和最大值之间的数字?任何人都可以帮助我吗?

希望你能帮助我。非常感谢。

【问题讨论】:

它看起来不像一个字符串! 这是家庭作业吗? 你的意思是你有一个清单? 您对 Count 进行了哪些尝试?它应该很简单,所以添加你在尝试中编写的代码,我们会更正它。 @DMactheDestroyer,问题是否是家庭作业并不重要,重要的是在帖子中付出的努力(我同意并不多)。 【参考方案1】:

我相信你有这样的字符串数组:

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);

【讨论】:

【参考方案2】:

这看起来像一个字符串数组。您需要删除双引号才能得到一个整数数组。从那里,您可以遍历数组并计算适合区间的数字或使用 LINQ 或 Lambda 表达式

【讨论】:

以上是关于用 C# 计算 List<string> 中的范围之间有多少个数字的主要内容,如果未能解决你的问题,请参考以下文章

c#中list的count方法计算满足条件的个数

C#中List<List<string>>要怎么处理?

C# 使用 LINQ 将 List<string> 的所有元素替换为相同的模式

C# 将 List<string> 添加到 List<List<string>> 数组

c#中 如何用List<string>作为Dictionary的key。

C# Tuple 创建一个新二元集合