【问题标题】:Count how many numbers is between a range in a List<string> with C#用 C# 计算 List<string> 中的范围之间有多少个数字
【发布时间】: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,问题是否是家庭作业并不重要,重要的是在帖子中付出的努力(我同意并不多)。

标签: c# range between


【解决方案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 表达式

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-05
      • 2011-04-07
      • 2020-06-05
      • 1970-01-01
      相关资源
      最近更新 更多