2014-11-21 51 views
-1

我已經收集了來自兩個不同來源的數據,例如:來自在線資源和來自本地數據庫。來自這些源的結果各自存儲在它們自己的System.Data.DataTable對象(扁平結構)中。DataTables - 可配置查詢

我希望能夠通過可以在App.Config中配置的連接查詢來查詢這些源代碼。這如何實現?

DataTabledtPublicCompanyBlacklist包含以下幾列:

id 
name 

DataTabledtMyCompanyCustomerSource包含以下幾列:

id 
salesTotal 
e-mail 

我希望能夠寫類似以下內容(如string):

select a.name, b.salesTotal, b.e-mail 
from dtPublicCompanyBlacklist a, dtMyCompanyCustomerSource b 
where a.id = b.id 

應用程序的用戶應該能夠修改查詢,而無需重新編譯源代碼。我還沒有發現Linq可以像這樣使用。

+0

_「查詢這些來源與我可以在App.Config中配置的連接查詢」_你能更好地解釋它嗎?一點都不清楚。 – 2014-11-21 09:05:21

+0

@TimSchmelter更新的例子,希望它澄清了這個問題。 – 2014-11-21 09:22:56

回答

0

請看下面的例子。你可以用linq查詢來完成。

var result = from dataRows1 in table1.AsEnumerable() 
      join dataRows2 in table2.AsEnumerable() 
      on dataRows1.Field<string>("ID") equals dataRows2.Field<string>("ID") 
      select dtResult.LoadDataRow(new object[] 
      { 
       dataRows1.Field<string>("ID"), 
       dataRows1.Field<string>("name"), 
       dataRows2.Field<int>("stock") 
       }, false); 
+0

有沒有什麼辦法可以通過讓你在這裏展示的查詢作爲在運行時讀取的字符串讓我們說出App.Config文件來完成。我希望用戶能夠修改查詢而無需重新編譯。 – 2014-11-21 10:59:57

+0

然後,您可能需要在app.config中編寫上述查詢,然後通過c#代碼進行編譯和執行。 [在運行時編譯C#代碼](http://www.codeproject.com/Tips/715891/Compiling-Csharp-Code-at-Runtime) – PrinceT 2014-11-21 11:30:58