用 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# 使用 LINQ 将 List<string> 的所有元素替换为相同的模式
C# 将 List<string> 添加到 List<List<string>> 数组