我必须从我的数据库生成一个csv文件。我正在使用C#,我可以这样做。我的问题更多与验证有关。我在想这样做:
public class MyObject
{
private string myString;
public string MyString
{
get
{
return this.myString;
}
set
{
this.myString = value.Remove(15).PadRight(15);
}
}
显然15是此字段的最大长度。这是一种愚蠢的方式来处理这个问题吗?我愿意接受建议。这只是该计划的冰山一角,将产生许多不同的csv,我想确保我建立一个可持续的模式。
答案 0 :(得分:2)
这种模式的问题在于,您将错过任何不良记录,因为您只是通过按摩数据来吞咽异常。但是,如果这就是你想要的那么它就是完美的。
另一种方法是将这些记录推送到错误列表,并让用户在完成所有操作后确定如何处理它们。所以,你可以这样做:
public sealed class BadRecords
{
private static BadRecords _instance;
public static BadRecords Instance
{
if (_instance == null) { _instance = new BadRecords(); }
return _instance;
}
private BadRecords() { this.List = new List<MyObject>(); }
public List<MyObject> List { get; set; }
}
public class MyObject
{
private string myString;
public string MyString
{
get
{
return this.myString;
}
set
{
if (value.Length > 15) { BadRecords.Instanse.List.Add(this); }
else { this.myString = value.Remove(15).PadRight(15); }
}
}
但是,您的解决方案仍然存在一个问题,您实际上并不只是前15个字符。实际上,您所拥有的代码会在小于15个字符的字符串上出错。考虑更像这样的事情:
this.myString = value.Length > 15 ? value.Substring(0, 15) : value;
如果你坚持吞下错误。
但是,在我提供的解决方案中,您可以简单地使用它:
this.myString = value.PadRight(15);
因为我们已经检查过它是否超过15个字符。