我想递归地迭代一个日期的数字,对它们求和,然后计算第一个总和中各个数字的另一个总和。
例如,出生日期 1947 年 8 月 15 日 (15/08/1947)
1+5+0+8+1+9+4+7 = 35
3+5 = 8
答案:8
LINQ 的.Aggregate()
功能对我帮助很大...
DOB.toString().Aggregate((a,b)=>(int)a+(int)b)
...但结果为35 :(
我想要一个递归 LINQ 调用,结果总是一位数。
string result = DOB.ToString("ddMMyyyy");
while (result.Length > 1)
result = result.Sum(c => int.Parse(c.ToString()))
.ToString();
DOB.ToString("yyyymmdd") 正好返回 8 位数字。每个数字不超过 9,所以第一个总和永远不会超过 8*9=72。所以只需要一个另一个总和。最后一个单一的linq答案是:
sum =
dob.ToString("yyymmdd")
.Aggregate(0, (a, b) => a + int.Parse(b.ToString())).ToString()
.Aggregate(0, (a, b) => a + int.Parse(b.ToString())).ToString()
.Aggregate(0, (a, b) => p + int.Parse(b.ToString()));