问题描述
请考虑以下内容:
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
中,则可以使用OfType
和Sum
var result = someList.OfType<int>().Sum();
或者对于任何可以表示为int
且可以转换为字符串表示形式的内容,可以将Sum
与ToString
和int.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的元素。
计算一系列数值的总和。
将数字的字符串表示形式转换为其32位带符号 等价的整数。返回值指示操作是否 成功。