【发布时间】:2015-06-04 17:25:39
【问题描述】:
我有一个分隔文件,我正在读入一个字符串数组(文件没有标题),然后尝试使用 LINQ 查询进行解析。
我想按多个匿名列分组(使用数组索引),然后对其中一个字段求和。
例如,假设我有一个格式为:
1000200034,2015,ABC,1
1000200034,2015,DEF,2
我想按第一列和第二列分组,忽略第三列,对第四列求和。
这样我就回来了:
1000200034,2015,3
当我按单列分组时,我可以得到返回总和的结果:
IEnumerable<string[]> query = from row in data
where row[0] == "1000200034"
group row by row[0] into g
select new string[]
{
g.Key,
g.Sum(a=>int.Parse(a.ElementAt(3))).ToString(),
};
但如果我尝试添加另一列,我不再得到总和,我得到两行返回:
IEnumerable<string[]> query = from row in data
where row[0] == "1000200034"
group row by new[]{row[0], row[1]} into g
select new string[]
{
g.Key[0],
g.Key[1],
g.Sum(a=>int.Parse(a.ElementAt(3))).ToString(),
};
我对 LINQ 和 C# 还很陌生,但我的 SQL 背景很扎实。只是很难转换我所知道的。任何帮助表示赞赏!
【问题讨论】:
标签: c# arrays string linq group-by