2011-03-24 77 views
0

设计方法我有一个C#项目,其中我需要阅读一些文本文件的一些网格数据(两列由行状数据的变量数)并在它们之间进行一些数学比较。你们认为什么是用数据结构和设计来表示这个最好的方法?基于C#的文本比较

样品数据表: LabelA:值a LabelB:VALUEB

我在想读取所有的数据到一个SQLite数据库,然后使用查询做一行通过对他们的行比较使用LINQ?你对这个想法有什么想法,而只是在内存数据结构中拥有一切?如果还有其他想法,请大声说出来。谢谢。

+0

请不要添加回复作为答案,您可以使用个人答案下的评论功能进行其他讨论。我将最后一篇文章转到了评论中,但不幸的是它被截断了一点。 – 2011-03-24 12:55:34

回答

0

如果它只是暂时的,我认为没有理由增加数据库的开销。只需将其存储在内存中。一个二维数组看起来是最明显的数据结构,除非你有特定的要求,不完全满足数组。

+0

感谢Johnathan - 我还有一些需要添加的细节,可能会影响您的回复。本质上,我将需要对这些网格数组进行重度比较 - 包括一个数组中是否存在一个标签,而不是另一个中是否存在标签,或者它们是否都存在,这些值本身是否匹配。 此外,数据在本质上是非常讲究等级。换句话说,我们可能在产品A和产品B中,在每个文本文件中包含几个系列网格数组,但只有产品A在一个文本文件中。我想知道哪个文件丢失了哪些文件,或者是否有任何值丢失。 – HelpThis 2011-03-24 05:46:57

+0

@HelpThis:然后编写代码来执行这些比较或者使用类似LINQ的东西。 – 2011-03-24 13:13:05

0

我不会坚持它,除非它是完全有必要在今后避免再处理一切访问这些数据。

我绝不会使用只是这样的数组,我会以封装逻辑对所有这比较构造对象。

我想简单地启动这种方式;

public class ImportedFile 
{ 
    private List<FileLine> lines; 
    public List<FileLine> Lines 
    { 
     get { return new ReadOnlyCollection(lines); } 
    } 

    public void AddLine(FileLine fl) 
    { 
     this.lines.Add(fl); 
    } 

    public void RemoveLine(FileLine fl) 
    { 
     this.lines.Remove(fl); 
    } 

    //Instance methods for comparing lines within the same file 
    //Static methods for comparing Files 
} 

public class FileLine 
{ 
    private String labelA; 
    public String LabelA 
    { 
     get { return labelA; } 
     set { labelA = value; } 
    } 

    private String labelB; 
    public String LabelB 
    { 
     get { return labelB; } 
     set { labelB = value; } 
    } 
}