C# 如何使用FileHelper库为迭代字段创建customer类
我用的是极好的。我对Customer类的迭代字段有一个问题。 正如您在下面的类中所看到的,L1~L51只是数据字段C# 如何使用FileHelper库为迭代字段创建customer类,c#,filehelpers,C#,Filehelpers,我用的是极好的。我对Customer类的迭代字段有一个问题。 正如您在下面的类中所看到的,L1~L51只是数据字段 [DelimitedRecord(",")] public class Customer { public string Time; public double L1; public double L2; public double L3; public double L4; public double L5; public
[DelimitedRecord(",")]
public class Customer
{
public string Time;
public double L1;
public double L2;
public double L3;
public double L4;
public double L5;
public double L6;
public double L7;
public double L8;
public double L9;
public double L10;
public double L11;
public double L12;
public double L13;
public double L14;
public double L15;
public double L16;
public double L17;
public double L18;
public double L19;
public double L20;
public double L21;
public double L22;
public double L23;
public double L24;
public double L25;
public double L26;
public double L27;
public double L28;
public double L29;
public double L30;
public double L31;
public double L32;
public double L33;
public double L34;
public double L35;
public double L36;
public double L37;
public double L38;
public double L39;
public double L40;
public double L41;
public double L42;
public double L43;
public double L44;
public double L45;
public double L46;
public double L47;
public double L48;
public double L49;
public double L50;
public double L51;
public string last;
}
已编辑
数据格式是:我有一个标题的第一行。如何构建客户类
Time,L1,L2,L3,L4,L5,L6,L7,L8,L9,L10,L11,L12,L13,L14,L15,L16,L17,L18,L19,L20,L21,L22,L23,L24,L25,L26,L27,L28,L29,L30,L31,L32,L33,L34,L35,L36,L37,L38,L39,L40,L41,L42,L43,L44,L45,L46,L47,L48,L49,L50,L51,
2013-08-29 오후 4:41:21,12.817,34.447,14.302,74.672,76.082,2.766,27.258,10.532,21.266,3.546,68.156,8.31,19.472,7.199,51.964,6.975,44.893,55.766,134.145,145.979,16.246,74.095,99.121,49.657,22.815,14.174,44.615,61.78,48.514,52.316,-1.357,8.641,10.265,15.562,47.328,12.561,14.676,13.234,55.211,29.533,49.059,42.693,52.754,14.9,71.916,61,94.955,82.832,47.04,39.178,66.191,
2013-08-29 오후 4:41:21,12.817,34.447,14.302,74.672,76.082,2.766,27.258,10.532,21.266,3.546,68.156,8.31,19.472,7.199,51.964,6.975,44.893,55.766,134.145,145.979,16.246,74.095,99.121,49.657,22.815,14.174,44.615,61.78,48.514,52.316,0,8.641,10.265,0,0,0,14.676,13.234,55.211,29.533,49.059,42.693,0,0,0,0,0,0,0,39.178,0,
2013-08-29 오후 4:41:21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44.615,61.78,48.514,52.316,0,8.641,10.265,0,0,0,14.676,13.234,55.211,29.533,49.059,42.693,0,0,0,0,0,0,0,39.178,0,
2013-08-29 오후 4:41:22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
可以这样写吗?或者有什么建议
[DelimitedRecord(",")]
public class Customer
{
public string Time;
public double[] L;
}
可以使用
FieldArrayLength
属性:
[DelimitedRecord(",")]
public class Customer
{
public string Time;
[FieldArrayLength(51)]
public double[] L;
public string last;
}
[DelimitedRecord(",")]
[IgnoreFirst(1)]
public class Customer
{
public string Time;
[FieldArrayLength(51)]
public double[] L;
public string last;
}
由于数据中的最后一列(似乎总是空的),您必须提供FieldArrayLength
属性。请注意,如果您担心该字段,可以将last
设置为私有而不是公共
另一种可能的解决方案是使用double?
而不是double
,但是您必须处理后面的null
值
[DelimitedRecord(",")]
public class Customer
{
public string Time;
public double?[] L;
}
第三种解决方案是使用FieldNullValue
属性提供最后一列中的数据默认值,例如:
[DelimitedRecord(",")]
public class Customer
{
public string Time;
[FieldNullValue(Double.NaN)]
public double[] L;
}
编辑:要跳过文件的第一行,请使用
IgnoreFirst
属性:
[DelimitedRecord(",")]
public class Customer
{
public string Time;
[FieldArrayLength(51)]
public double[] L;
public string last;
}
[DelimitedRecord(",")]
[IgnoreFirst(1)]
public class Customer
{
public string Time;
[FieldArrayLength(51)]
public double[] L;
public string last;
}
如果不可能,只需从窗口中抛出该库,因为如果它强制您拥有50个字段,那就是胡说八道了!:)我不明白这一点library@Nicolas,使用FileHelpers的最佳方法是将record类视为文件格式的“规范”。您可以使用它来描述仅使用公共字段的文件(是的,这违背了C#最佳实践,我知道,但请记住这只是规范)。一旦将文件加载到FileHelpers非常擅长的MyFileHelperClass[]数组中,就可以将值(例如,使用foreach)映射到一个更合理的类,该类包含属性、方法、附加功能等。不过还有其他方法。但谢谢你们的澄清。我已经编辑了更多关于这个领域的标题。你知道吗?再次谢谢。很不错的。没有“FieldArrayLength”属性。是否是旧版本?我尝试了NuGet提供的版本。是2.9.9之类的。