多個Datatable之間的聯合查詢


有DataTable1 從數據庫查出來
單號   價格
DataTable2   從對賬的Excel查出來
單號   價格
現在怎么能聯合查詢這兩個Datatbale.
顯示
單號  價格   對賬價格

16 个解决方案

#1


那只能加個DataTable3了,包括單號 價格 對賬價格 這三個列。然后遍歷DataTable1把前兩列的值add進去,再遍歷DataTable2,根據單號判斷插入對賬價格。。

#2


那只能加個DataTable3了,包括單號 價格 對賬價格 這三個列。然后遍歷DataTable1把前兩列的值add進去,再遍歷DataTable2,根據單號判斷插入對賬價格。。

#3


你這樣查,還不如在最開始用一條 sql語句查詢兩個表,把所需數據查出來.

#4


樓主說的是 DataTable1 從數據庫查出來
DataTable2 從對賬的Excel查出來
3樓先看清要求。。

#5


http://hi.baidu.com/chenying99/blog/item/9b87db24611b273b8644f90c.html 

#6


linq to datatable
join查詢


void Main()
{
 DataTable dtA=new DataTable();  
 dtA.Columns.Add("id",typeof(int));  
 dtA.Columns.Add("price",typeof(string));  
 dtA.Rows.Add(1,"111");  
 dtA.Rows.Add(2,"222");  
 dtA.Rows.Add(3,"333");  
 dtA.Rows.Add(4,"444");  
 dtA.Rows.Add(5,"555");  

 DataTable dtB=dtA.Clone();  
 dtB.Rows.Add(1,"121");  
 dtB.Rows.Add(2,"221");  
 dtB.Rows.Add(3,"331"); 

     DataTable dtC=dtA.Clone(); 
 dtC.Columns.Add("price_excel");
  
     var query=from a in dtA.AsEnumerable()
            join b in dtB.AsEnumerable()
on a.Field<int>("id") equals b.Field<int>("id") into g
from b in g.DefaultIfEmpty()
select new 
{
     id=a.Field<int>("id"),
 price=a.Field<string>("price"),
 price_excel=b==null?"None":b.Field<string>("price")
};

    query.ToList().ForEach(q=>dtC.Rows.Add(q.id,q.price,q.price_excel));

}

#8


引用 6 樓 q107770540 的回復:
linq to datatable
join查詢


C# code


void Main()
{
     DataTable dtA=new DataTable();  
     dtA.Columns.Add("id",typeof(int));  
     dtA.Columns.Add("price",typeof(string));  
     dtA.……

正解

#9


你直接 Union 鏈接倆個表不好嗎?要這么復雜做什么。

#10


只能循環加入了啊;

#11


引用 3 樓 sckjlirui 的回復:
你這樣查,還不如在最開始用一條 sql語句查詢兩個表,把所需數據查出來.

一個從DB~一個從EXCEL~

#12


引用 6 樓 q107770540 的回復:
linq to datatable
join查詢

C# code

void Main()
{
     DataTable dtA=new DataTable();  
     dtA.Columns.Add("id",typeof(int));  
     dtA.Columns.Add("price",typeof(string));  
     dtA.Rows.Add(……

謝謝 回家試試~

#13


引用 9 樓 tsgx_1989 的回復:
你直接 Union 鏈接倆個表不好嗎?要這么復雜做什么。

一個從DB~一個從EXCEL~

#14


我只想到了最笨的方法:
  將EXCEL的放到一個datatable中,再將DB的那個表也放到內存中的datatable中
然后采用循環的方式,進行比較匯總 ,然后再輸出

#15


把從excel的數據放入數據庫后,在查詢,選擇合適的時機,刪除excel插入數據庫的臨時數據

#16



dt2.PrimaryKey = dt2.Columns["單號"];
dt.Columns.Add("價格2");
foreach(DataRow row in dt.Rows) row["價格2"] = dt2.Find(row["單號"])["價格"];


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com