Linq 行开头的数字之和
我有一个文件:Linq 行开头的数字之和,linq,Linq,我有一个文件:site.log 19 www.mysite.org 300 cod.mysite.org 100 www.newfile.com 199 py.mysite.org 45 python.mysite.org/als 45 mysite.org/als/4/d 我想通读所有包含字符串mysite.org的诗歌,从文本开头获取数字,并对给定文本前面的所有数字求和 File.ReadLines(filePath).Where(x => x.Contains("mysite.
site.log
19 www.mysite.org
300 cod.mysite.org
100 www.newfile.com
199 py.mysite.org
45 python.mysite.org/als
45 mysite.org/als/4/d
我想通读所有包含字符串mysite.org
的诗歌,从文本开头获取数字,并对给定文本前面的所有数字求和
File.ReadLines(filePath).Where(x => x.Contains("mysite.org")).SelectMany(...));
你很接近。在
Where
之后,使用选择仅投影行的开头:
var result = File.ReadLines(filePath)
.Where(x => x.Contains("mysite.org"))
.Select(x => int.Parse(x.Split()[0]))
.Sum();
请注意,如果前缀不是整数,则对int的解析可能会失败。您可以改用TryParse
。如果您愿意,可以在这里查看:您很接近了。在Where
之后,使用选择仅投影行的开头:
var result = File.ReadLines(filePath)
.Where(x => x.Contains("mysite.org"))
.Select(x => int.Parse(x.Split()[0]))
.Sum();
请注意,如果前缀不是整数,则对int的解析可能会失败。您可以改用TryParse
。如果需要,可以在此处查看:ISplit
按空格和TryParse
第一个值,如果成功,我取这个值,如果不成功,我取0
var result = File.ReadLines("")
.Where(x => x.Contains("mysite.org"))
.Select(x => {int temp; return int.TryParse(x.Split(' ')[0], out temp) ? temp : 0;})
.Sum();;
ISplit
按空格和TryParse
第一个值,如果成功,我取这个值,如果不成功,我取0
var result = File.ReadLines("")
.Where(x => x.Contains("mysite.org"))
.Select(x => {int temp; return int.TryParse(x.Split(' ')[0], out temp) ? temp : 0;})
.Sum();;
总是有一个数字在开头吗?@GiladGreen这个数字总是有,但不知道它由多少位数字组成。总是有一个数字在开头吗?@GiladGreen这个数字总是有,但不知道它由多少位数字组成