列表中表中某些位置的元素总和

  • 本文关键字:元素 列表 位置 c# linq
  • 更新时间 :
  • 英文 :


嗨,我有字符串表列表

List<string[]> PositionList23 = new List<string[]>();

该列表包含使用拆分从文件中获取的文档的位置。

每个字符串表有 5 个元素:产品代码、净值、增值税价值、总价值、增值税

所以它可以看起来像

    XXX, 10.00, 2.00,
  • 12.00, 20.00
  • XXZ, 15.00, 3.00, 18.00, 20.00
  • XXY, 20.00, 1.00,
  • 12.00, 5.00
  • XYY, 40.00, 2.00,
  • 41.00, 5.00
  • XZZ, 40.00,
  • 3.20, 41.00, 8.00

最后,我想要这样的结构:sum(净值),sum(vatvalue),sum(总值),vatrate因此,在给定的考试中,它将是:

  • 25.00, 5.00, 30.00 , "20.00"
  • 60.00, 3.00, 63.00, "5.00"
  • 40.00, 3.20, 43.20, "8.00"

但请记住,该列表是字符串表,因此它没有像 netvalue 这样的名称,但总和必须根据表中的位置进行计数(例如,netvalue 始终是 2 处的元素)。 并且该表是字符串,因此必须以某种方式转换求和元素)。

我的代码:

var results =
        from row in PositionList
        group row by row[3] into grp
        //orderby grp.Key
        select new
        {
            VATRate = grp.Key,
            Net = grp.Sum(r => Convert.ToDouble(r[0])),
            Vat = grp.Sum(r => Convert.ToDouble(r[1])),
            Gros = grp.Sum(r => Convert.ToDouble(r[2]))
        };

但我得到 格式异常 在行中:Net = grp。Sum(r => Convert.ToDouble(r[0])),

(如何在注释中粘贴代码?

你能尝试一下吗?

var resultList = PositionList23.GroupBy(x => x[4]).Select(y => new string[]
                                        { 
                                            y.Sum(n => Convert.ToDecimal(n[1])).ToString(),
                                            y.Sum(v => Convert.ToDecimal(v[2])).ToString(),
                                            y.Sum(g => Convert.ToDecimal(g[3])).ToString(),
                                            y.Key.ToString()
                                        }).ToList();

编辑:

以您想要的方式格式化列表,

var resultList = PositionList23.GroupBy(x => x[4]).Select(y => new
                                        {
                                            NetValue = y.Sum(n => Convert.ToDecimal(n[1])),
                                            VatValue = y.Sum(v => Convert.ToDecimal(v[2])),
                                            GrossValue = y.Sum(g => Convert.ToDecimal(g[3])),
                                            VATRate = y.Key
                                        }).ToList();

希望这有帮助...

相关内容

  • 没有找到相关文章

最新更新