0

すべての piece[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

2 番目のピース (piece[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メソッドを使用して、区切り文字にスペース文字を使用してそれを行うことができます。文字列の配列を返します。金額は 2 番目の要素になります。

次に、 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 に答える