2011-05-11 71 views
2

我有一個數據庫,我的程序將查詢。動態表名

它都具有相同的結構,3個表:表1 ,表2表3

如何我寫一個LINQ查詢,將查詢這些表的,用我的動態指定表名?

除此之外。如果將其他表添加到數據庫中,此解決方案必須工作。所以,即使當我寫代碼表4不存在它可能會被添加。

+0

是否可以創建表名稱的數組,然後從該拉(即使用表名的陣列上一個foreach,然後運行與元素查詢的數組作爲名稱)? – soandos 2011-05-11 18:40:35

+0

[一些黑客在這裏被討論](http://social.msdn.microsoft.com/Forums/en/linqprojectgeneral/thread/6273d072-f500-4382-afb4-8eafd185794d)。因人而異。祝你好運。 – 2011-05-11 19:10:47

+0

如果表格全部具有相同的結構,爲什麼不只有一個表格,並且有一個額外的列表示記錄的「類型」(以前由該記錄屬於哪個表格指示)?然後,您將能夠在LINQ查詢的where子句中指定記錄「type」。 – 2011-05-16 06:25:41

回答

1

試試這個:

 DataSet s = new DataSet(); 
     DataTable t1 = new DataTable(); 
     t1.Columns.Add ("A", typeof (int)); 
     t1.Columns.Add ("B", typeof (string)); 
     s.Tables.Add (t1); 
     t1.Rows.Add (1, "T1"); 
     t1.Rows.Add (2, "T1"); 

     DataTable t2 = new DataTable(); 
     t2.Columns.Add ("A", typeof (int)); 
     t2.Columns.Add ("B", typeof (string)); 
     s.Tables.Add (t2); 
     t2.Rows.Add (1, "T2"); 
     t2.Rows.Add (2, "T2"); 
     t2.Rows.Add (3, "T2"); 

     var result = from t in s.Tables.OfType<DataTable>() 
        from r in t.Rows.OfType<DataRow>() 
        select r;