亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從csv讀取到對象[] C#

從csv讀取到對象[] C#

C#
鳳凰求蠱 2021-10-24 17:56:29
我正在嘗試從 .csv 文件讀取到對象數組。這里還有其他解決方案可以為列表提供解決方案,但我似乎無法讓它對我有用。對象定義:public class DTOClass{    //declare data members    [DataMember]    public DateTime Date { get; set; }    [DataMember]    public string stock_symbol { get; set; }    [DataMember]    public double stock_price_open { get; set; }    [DataMember]    public double stock_price_close { get; set; }    [DataMember]    public double stock_price_low { get; set; }    [DataMember]    public double stock_price_high { get; set; }    [DataMember]    public double stock_price_adj_close { get; set; }    [DataMember]    public long stock_volume { get; set; }    [DataMember]    public string stock_exchange { get; set; }}實例聲明:private DTOClass[] _dTOs;過濾方式:private List<DTOClass> FromCsv(string csvLine, List<DTOClass> rest){    DataTable _dt = new DataTable();    string[] values = csvLine.Split(',');    int j = _dt.Rows.Count;    for (int i = 0; i < j; i++)    {        DTOClass dto = new DTOClass();        dto.Date = Convert.ToDateTime(values[0]);        dto.stock_symbol = Convert.ToString(values[1]);        dto.stock_price_open = Convert.ToDouble(values[2]);        dto.stock_price_close = Convert.ToDouble(values[3]);        dto.stock_price_low = Convert.ToDouble(values[4]);        dto.stock_price_high = Convert.ToDouble(values[5]);        dto.stock_price_adj_close = Convert.ToDouble(values[6]);        dto.stock_volume = Convert.ToInt64(values[7]);        dto.stock_exchange = Convert.ToString(values[8]);        rest.Add(dto);    }    return rest;}調用過濾器:DTO = File.OpenText(Filename).ReadLine().Select(v => FromCsv(v.ToString(), _restDto)).ToArray();我需要它返回到一個對象數組,因為它然后進入數據網格上的 CollectionView。但我不斷收到此錯誤:“無法將類型 'System.Collections.Generic.List[]' 隱式轉換為 'MBM.Services.DTOClass[]'”我知道我顯然是在返回一個列表列表,但是我已經嘗試了其他提供的方法,我只是被難住了。
查看完整描述

2 回答

?
DIEA

TA貢獻1820條經驗 獲得超3個贊

一種簡單的方法是拆分線條并將它們選擇到您的新對象中。


var result = File.ReadAllLines("pathTo.csv")

                .Select(line => line.Split(','))

                .Select(x => new MyObject { 

                    prop1 = x[0],

                    prop2 = x[1],

                    //etc.. 

                })

                .ToArray();


查看完整回答
反對 回復 2021-10-24
?
動漫人物

TA貢獻1815條經驗 獲得超10個贊

重新創建輪子沒有意義,我只是使用CsvHelper,它支持您正在做的事情,除了處理格式錯誤的 CSV 之外,您還可以像這樣設置映射:


public sealed class MyClassMap : ClassMap<MyClass>

{

    public MyClassMap()

    {

        AutoMap();

        Map( m => m.CreatedDate ).Ignore();

    }

}

然后你可以像這樣獲得對象:


var csv = new CsvReader( textReader );

var records = csv.GetRecords<MyClass>();


查看完整回答
反對 回復 2021-10-24
  • 2 回答
  • 0 關注
  • 372 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號