+-
嗨,我正在使用C#学习LINQ,并且需要一些有关如何构建类的建议.
我需要从中创建报表的sql server中有50个现有表.这些是现有的,每个都有我需要查询的几年的数据记录.
我在使用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,即使它们完全相同.
我可以创建一个holder类来做这样的事情吗?那么两个表都被读入相同的类型?
DataLog log1 = from d in dc.DataLog1
select d;
DataLog log2 = from d in dc.DataLog2
select d;
我希望能够将它们全部添加到DataLog类型的一个大列表中,并在可能的情况下通过它们进行迭代.如果是这样的话,那么牢记这一点的最佳方法是什么?有50个表,每个表约25列.
如果我做某事很愚蠢,请随时告诉我.感谢您的任何建议.
最佳答案
最好的选择是尝试将所有表合并到一个表中,并添加一列以区分它们来自哪个原始表.
如果不能这样做,则可以创建一个基类
public class DataLog
{
[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;
}
然后为每个表派生子类
[Table(Name = "Data_Log_1")]
public class DataLog1 : DataLog
{ }
[Table(Name = "Data_Log_2")]
public class DataLog2 : DataLog
{ }
您仍然必须分别查询所有记录,但是您可以将每个表中的所有记录添加到List< DataLog>中.
点击查看更多相关文章
转载注明原文:CodeGo.net>如何使用LINQ将映射表类合并为一个类 - 乐贴网