假设我有一个像这样的列表:
List<string> _lstr = new List<string>();
_lstr.Add("AA");
_lstr.Add("BB");
_lstr.Add("1");
_lstr.Add("7");
_lstr.Add("2");
_lstr.Add("5");
如果我不知道列表中有多少个整数,如何总结列表中的整数?可能是4,可能是10等等...我所知道的是前两项是字符串,其余是整数。
在这种情况下,所需的结果是 15 。
答案 0 :(得分:5)
方法A 无条件地跳过前2个并假设其余的都是整数字符串:
var sum = _lstr.Skip(2).Select(int.Parse).Sum();
方法B 不做任何决定:
var sum = _lstr.Aggregate(0, (x, z) => x + (int.TryParse(z, out x) ? x : 0));
答案 1 :(得分:4)
不假设前两项是字符串
int sum = _lstr.Select(s => {int i; return int.TryParse(s,out i) ? i : 0; })
.Sum();
答案 2 :(得分:1)
很容易:
list.Skip(2).Select(int.Parse).Sum();
答案 3 :(得分:1)
var sum = _lstr.Skip(2).Sum(s => int.Parse(s));
答案 4 :(得分:1)
int num = 0; int sum = 0;
_lstr.ForEach(x => {Int32.TryParse(x, out num); sum +=num;});
只是为了证明如果Int32.TryParse失败,out var被重置为零
_lstr.Add("AA");
_lstr.Add("BB");
_lstr.Add("1");
_lstr.Add("7");
_lstr.Add("2");
_lstr.Add("5");
_lstr.Add("CC");
_lstr.Add("9");
int num = 0; int sum = 0;
foreach(string s in _lstr)
{
bool result = Int32.TryParse(s, out num);
Console.WriteLine("TryParse:" + result + " num=" + num);
}
TryParse:False num=0
TryParse:False num=0
TryParse:True num=1
TryParse:True num=7
TryParse:True num=2
TryParse:True num=5
TryParse:False num=0
TryParse:True num=9
答案 5 :(得分:-5)
int sum=0,i=0;
foreach(string s in mylist){
//in case of non integers
try{
i=int.parse(s);//you can put convert or tryparse too here
} catch(Exception ex) {
i=0;
}
sum=sum+i;
}
return sum;