如何用循环仅求和C#对象列表中的整数元素?

问题描述

请考虑以下内容:

static void Main(string[] args)
        {
            List<object> someList = new List<object>();
            someList.Add(1); 
            someList.Add(2); 
            someList.Add("apple"); 
            someList.Add(true);
            someList.Add(3);
        }

尚未使用数据类型定义列表项,列表项包含布尔值,字符串和整数。假设还有更多不同数据类型的列表项,如何使用简单循环或if语句仅求和对象列表中的整数(例如1、2和3)?我才刚开始使用C#,谢谢!

搜索后,我尝试过类似的操作,但没有成功:

            if(!someList.Contains(int))
                List.Add(int);

解决方法

如果您知道它们被装在int中,则可以使用OfTypeSum

var result = someList.OfType<int>().Sum();

或者对于任何可以表示为int且可以转换为字符串表示形式的内容,可以将SumToStringint.TryParse

一起使用。
var result = someList.Sum(x => int.TryParse(x.ToString(),out var value) ? value : 0);

或者如果您喜欢循环

var result = 0;
foreach (var value in someList.OfType<int>())
   result += value;

// or 

var result = 0;
foreach (var item in someList)
   if (int.TryParse(item.ToString(),out var value))
      result += value;

其他资源

Enumerable.OfType(IEnumerable) Method

根据指定的类型过滤IEnumerable的元素。

Enumerable.Sum Method

计算一系列数值的总和。

Int32.TryParse Method

将数字的字符串表示形式转换为其32位带符号 等价的整数。返回值指示操作是否 成功。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...