【发布时间】:2018-02-17 21:36:55
【问题描述】:
我正在读取一个 CSV 文件,将其拆分为列,然后分组到一个新类中。
它看起来很笨拙,只是想知道是否有更简单的方法,例如不先将它们选择到类中:
编辑: 为了澄清我试图让TimesheetHours 按所有其他列分组。
var rowList = csvFile.Rows.Select(row => row.Split(','))
.Select(cols => new UtilisationRow {
UploadId = savedUpload.Id,
FullName = cols[0],
TimesheetWorkDateMonthYear = Convert.ToDateTime(cols[1]),
TimesheetTaskJobnumber = cols[2],
TimesheetWorktype = cols[3],
TimesheetHours = Convert.ToDouble(cols[4]),
TimesheetOverhead = cols[5]
})
.GroupBy(d => new {
d.FullName,
d.TimesheetWorkDateMonthYear,
d.TimesheetTaskJobnumber,
d.TimesheetWorktype,
d.TimesheetOverhead
})
.Select(g => new UtilisationRow {
FullName = g.First().FullName,
TimesheetWorkDateMonthYear = g.First().TimesheetWorkDateMonthYear,
TimesheetTaskJobnumber = g.First().TimesheetTaskJobnumber,
TimesheetWorktype = g.First().TimesheetWorktype,
TimesheetHours = g.Sum(s => s.TimesheetHours),
TimesheetOverhead = g.First().TimesheetOverhead
})
.ToList();
非常感谢, 李。
【问题讨论】:
-
我不确定 groupby 和 last select 的目的是什么,您是否要过滤不同的元素?因为有更好的方法来做到这一点。
-
我正在尝试按所有列分组,并对 TimesheetHours
TimesheetHours = g.Sum(s => s.TimesheetHours)求和 -
使用 oledb 读入数据表。前几天我举了一个小例子:stackoverflow.com/questions/48788682/…
标签: c# linq csv performance-testing