0

我想总结所有片[1]

    private async void search()
    {
        if (tbs.Text != null)
        {
            var files = await ApplicationData.Current.LocalFolder.GetFileAsync(logid.Text + ".txt");
            var lines = await FileIO.ReadLinesAsync(files);
            var pattern = tbs.Text;  
            foreach (string line in lines.Where(line => line.Contains(pattern)))
            {

            }
        }
    }

每条线都是这样的
收入 10000
收入 20000

我想总结所有第二部分(片[1])
如何做到这一点?

4

2 回答 2

1

假设您有如下列表,您可以得到总和:

List<string> list = new List<string>() { "income 10000", "income 20000", "income 30000" };
var sum = list.Sum(r => int.Parse(r.Split(' ')[1]));

以上假设您将在拆分数组中至少有 2 个元素,并且它在索引 1 上的项目是整数类型。对于以上内容,您将得到结果60000

如果你想使用int.TryParse那么:

var sum = list.Sum(r => { int i; 
                          return int.TryParse(r.Split(' ')[1], out i) ? i : 0; });
于 2012-12-14T06:54:31.367 回答
0

您可以使用string.Split方法来做到这一点,使用空格字符作为分隔符。它将返回一个字符串数组,数量将是第二个元素。

然后使用int.TryParse将字符串值转换为 int以计算总和。

   private async void search()
    {
        if (tbs.Text != null)
        {
            var files = await ApplicationData.Current.LocalFolder.GetFileAsync(logid.Text + ".txt");
            var lines = await FileIO.ReadLinesAsync(files);
            var pattern = tbs.Text;  
            var sum = 0;
            foreach (string line in lines)
            {
                var elements = line.Split(' ');
                int value;
                if (int.TryParse(elements[1], out value))
                {
                    sum += value;
                }
            }
        }
    }
于 2012-12-14T06:54:28.947 回答