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
。如果需要,可以在此处查看:

I
Split
按空格和
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();;

I
Split
按空格和
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这个数字总是有,但不知道它由多少位数字组成