嗨我有字符串表的列表
List<string[]> PositionList23 = new List<string[]>();
该列表包含使用拆分从文件中获取的文档的位置。
每个字符串表都有5个元素: ProductCode,netvalue,vatvalue,grosvalue,vatrate
所以看起来像
我最终我希望有这样的结构:sum(netvalue),sum(vatvalue),sum(grosvalue),vatrate 所以在给定的考试中,它将是:
但请记住,该列表是字符串表,因此它没有像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]))
};
但我在行中得到FormatException:Net = grp.Sum(r =&gt; Convert.ToDouble(r [0])),
(如何在评论中粘贴代码?)
答案 0 :(得分: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();
希望这会有所帮助......