我正在尝试使用Linq读取CSV(每行包含DailyValues
对象的组件)并将所有对象放入List
。没有ToList()
,它会cannot implicitly convert IEnumerable to List
,如果我将.ToList()
放在那里就会显示decimal does contain a definition for ToList()
。为了记录,我是using System.Linq
。如何使用以下内容将CSV中的数据转换为对象列表?
List<DailyValues> values = new List<DailyValues>();
values = from line in File.ReadAllLines(filePath).Skip(1)
let columns = line.Split(',')
select new DailyValues
{
Date = DateTime.Parse(columns[0]),
Open = decimal.Parse(columns[1]),
High = decimal.Parse(columns[2]),
Low = decimal.Parse(columns[3]),
Close = decimal.Parse(columns[4]),
Volume = decimal.Parse(columns[5]),
AdjClose = decimal.Parse(columns[6])
.ToList() // this guy is the problem
};
答案 0 :(得分:4)
您需要在查询中调用ToList
而不是十进制属性,还需要围绕查询括号:
(from line in File.ReadAllLines(filePath).Skip(1)
let columns = line.Split(',')
select new DailyValues
{
Date = DateTime.Parse(columns[0]),
Open = decimal.Parse(columns[1]),
High = decimal.Parse(columns[2]),
Low = decimal.Parse(columns[3]),
Close = decimal.Parse(columns[4]),
Volume = decimal.Parse(columns[5]),
AdjClose = decimal.Parse(columns[6])
}).ToList();
答案 1 :(得分:1)
尝试
List<DailyValues> values =
(
from line in File.ReadAllLines(filePath).Skip(1)
let columns = line.Split(',')
select new DailyValues
{
Date = DateTime.Parse(columns[0]),
Open = decimal.Parse(columns[1]),
High = decimal.Parse(columns[2]),
Low = decimal.Parse(columns[3]),
Close = decimal.Parse(columns[4]),
Volume = decimal.Parse(columns[5]),
AdjClose = decimal.Parse(columns[6])
}
).ToList();