1

我必须从我的数据库生成一个 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,我想确保我建立了一个可持续的模式。

4

1 回答 1

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 个字符。

于 2013-01-04T19:53:56.863 回答