0
我想用CsvHelper將其中有三個水平節的文件解析爲一個嵌套的C#類。我希望從文件返回一行,但我得到多行和不正確的數據。我的測試是使用CSV文件,但是使用以下代碼可以得到相同的結果。所以,完成這個任務是不可能的?我已經看過其他職位,我會自己循環和閱讀部分,但我希望嵌套的C#類將工作。它更符合要求。CSVHelper - 用子類映射單個類,但獲取多個行返回
我相信這個例子會對別人有幫助。
謝謝你的幫助!
邁克
using System.IO;
using System.Linq;
using CsvHelper;
using CsvHelper.Configuration;
namespace CsvParserExample
{
public class CsvParser
{
public static void Main()
{
using (var stream = new MemoryStream())
{
using (var writer = new StreamWriter(stream))
{
using (var reader = new StreamReader(stream))
using (var csv = new CsvReader(reader))
{
// CsvFile.Name
writer.WriteLine("Mike,,");
// Section1.Id, Section2.Comment, Section2.Purpose
writer.WriteLine("1234,, I am a comment.,, I am a purpose.");
writer.Flush();
stream.Position = 0;
csv.Configuration.HasHeaderRecord = false;
csv.Configuration.RegisterClassMap<CsvFileMap>();
csv.Configuration.RegisterClassMap<Section1Map>();
csv.Configuration.RegisterClassMap<Section2Map>();
csv.Configuration.RegisterClassMap<Section3Map>();
var recs = csv.GetRecords<CsvFile>().ToList();
}
}
}
}
public class CsvFile
{
public Section1 Section1 { get; set; }
public Section2 Section2 { get; set; }
}
public sealed class CsvFileMap : CsvClassMap<CsvFile>
{
public CsvFileMap()
{
References<Section1Map>(m => m.Section1);
References<Section2Map>(m => m.Section2);
}
}
public class Section1
{
public string Name { get; set; }
}
public sealed class Section1Map : CsvClassMap<Section1>
{
public Section1Map()
{
Map(m => m.Name).Index(0);
}
}
public class Section2
{
public string Id { get; set; }
public Section3 Section3 { get; set; }
}
public sealed class Section2Map : CsvClassMap<Section2>
{
public Section2Map()
{
Map(m => m.Id).Index(0);
References<Section3Map>(m => m.Section3);
}
}
public class Section3
{
public string Comment { get; set; }
public string Purpose { get; set; }
}
public sealed class Section3Map : CsvClassMap<Section3>
{
public Section3Map()
{
Map(m => m.Comment).Index(0);
Map(m => m.Comment).Index(1);
}
}
}
}
您好,正在使用'reader':「使用(var csv = new CsvReader(reader))」:) –
@LeiYang他說得對,'reader'用於創建'csv'並且'csv'被使用。 – grek40
好吧,所以我認爲我已經想通了......我轉過身去...... 我創建了一個CsvFile的實例,並使用CsvHelper將實例寫入CSV文件。結果是明智的,但它不是我所期望的: –