2017-10-27 11 views
0

現在、ブール値であるcsvファイルから値を解析しようとしています。CsvHelper Stringからのブール値の解析

Map(m => m.Enabled).Name("Enabled").TypeConverterOption(false, string.Empty); 

があります:私たちは、値が正常にYesY(いかなる場合でも)を解析しますが、私はこのようなクラスマップに値をマッピングしていNoN

解析しないことに気づきましたこれはYesを読み取るが、Noを読み取ることができない理由で、noを解析する機能を追加する方法はありますか?

+0

「false」を空の文字列から変換する必要があります。これ以上の設定はありますか? – grek40

+0

https://stackoverflow.com/questions/2872710/can-net-convert-yes-no-to-boolean-without-if –

答えて

0

バージョン4.0.3では、これが動作します。

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)) 
    { 
     writer.WriteLine("Id,Name,IsSomething"); 
     writer.WriteLine("1,one,Yes"); 
     writer.WriteLine("2,two,Y"); 
     writer.WriteLine("3,three,No"); 
     writer.WriteLine("4,four,N"); 
     writer.Flush(); 
     stream.Position = 0; 

     csv.Configuration.RegisterClassMap<TestMap>(); 
     csv.GetRecords<Test>().ToList().Dump(); 
    } 
} 

public class Test 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public bool IsSomething { get; set; } 
} 

public sealed class TestMap : ClassMap<Test> 
{ 
    public TestMap() 
    { 
     Map(m => m.Id); 
     Map(m => m.Name); 
     Map(m => m.IsSomething) 
      .TypeConverterOption.BooleanValues(true, true, "Yes", "Y") 
      .TypeConverterOption.BooleanValues(false, true, "No", "N"); 
    } 
} 

バージョン2.16.3ではこれが機能します。

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)) 
    { 
     writer.WriteLine("Id,Name,IsSomething"); 
     writer.WriteLine("1,one,Yes"); 
     writer.WriteLine("2,two,Y"); 
     writer.WriteLine("3,three,No"); 
     writer.WriteLine("4,four,N"); 
     writer.Flush(); 
     stream.Position = 0; 

     csv.Configuration.RegisterClassMap<TestMap>(); 
     csv.GetRecords<Test>().ToList().Dump(); 
    } 
} 

public class Test 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public bool IsSomething { get; set; } 
} 

public sealed class TestMap : CsvClassMap<Test> 
{ 
    public TestMap() 
    { 
     Map(m => m.Id); 
     Map(m => m.Name); 
     Map(m => m.IsSomething) 
      .TypeConverterOption(true, "Yes", "Y") 
      .TypeConverterOption(false, "No", "N"); 
    } 
} 
関連する問題