你好,我正在学习使用C#编写LINQ程序,并需要一些关于如何构建类的建议。
我有50个已经存在的表格在SQL Server中,需要从这些表格创建报告。这些表格都是现有的,每个表格都有几年的数据记录需要查询。
我使用LINQ to SQL设计工具将这些表格拖入程序中,得到了类似以下代码的结果:
[Table(Name = "Data_Log_1")]
public class DataLog1
{
[Column(Name = "rid", IsPrimaryKey = true)]
public int R_Id;
[Column(Name = "name", CanBeNull = false)]
public string Name;
[Column(Name = "Chemical_1_Amount", CanBeNull = false)]
public int Chemical_1_Amount;
[Column(Name = "Chemical_2_Amount", CanBeNull = false)]
public int Chemical_2_Amount;
// This table continues for another 20 chemicals etc...
}
在我的表单中,我可以输入查询条件并输出结果,一切都很顺利。它返回了一个包含所有数据的DataLog1实例。
于是我用同样的方式创建了第二个(共50个)表:
[Table(Name = "Data_Log_2")]
public class DataLog2
{
[Column(Name = "rid", IsPrimaryKey = true)]
public int R_Id;
[Column(Name = "name", CanBeNull = false)]
public string Name;
[Column(Name = "Chemical_1_Amount", CanBeNull = false)]
public int Chemical_1_Amount;
[Column(Name = "Chemical_2_Amount", CanBeNull = false)]
public int Chemical_2_Amount;
// This table continues for another 20 chemicals etc...
}
在所有50个数据日志表/类中都是相同的,因此我希望将它们全部保存在一个列表中,或者至少能够将它们作为相同类型传递。但是,我无法这样做,因为一个是DataLog1,另一个是DataLog2,尽管它们完全相同。
我能否创建一个容器类来实现这样的效果?以便将两个表读入相同的类型中?
DataLog log1 = from d in dc.DataLog1
select d;
DataLog log2 = from d in dc.DataLog2
select d;
我希望能将它们全部添加到一个名为DataLog的大列表中,如果可能的话,通过此方式进行迭代。如果可以,请告知最佳方法,考虑到有大约50个表,每个表有25个左右的列。
如果我做了什么蠢事,请随时让我知道,谢谢任何建议。