2012-04-18 77 views
1

我需要一些幫助從數據集中獲取數據。 代碼:用3個表格添加數據集關係查詢

  DataRelation relation = null; 
      DataColumn table1Column = null; 
      DataColumn table2Column = null; 
      DataColumn table2Column1 = null; 
      DataColumn table3Column = null; 

      table1Column = tlobergeDataSet.Tb_Product.Columns[0]; 
      table2Column = tlobergeDataSet.Tb_Transactions.Columns[2]; 
      table2Column1 = tlobergeDataSet.Tb_Transactions.Columns[1]; 
      table3Column = tlobergeDataSet.Tb_Consumer.Columns[0]; 

      relation = new DataRelation("relation", table1Column, table2Column); 
      tlobergeDataSet.Relations.Add(relation); 

      relation = new DataRelation("relation1", table3Column, table2Column1); 
      tlobergeDataSet.Relations.Add(relation); 

給定的產品名稱,我需要填充表與每個不同的城市,有多少該產品已在本市銷售的(該產品添加所有的價格對任何消費者在特定城市)

前表:

產品表:

Prod_ID Name  

1   tv 
2   couch 

消費表:

Con_Id Name City 
---------------------- 
1   Gray New York 
2   Joe  Chicago 
3   Steve Madison 

交易表

Tran_Id Con_ID Prod_ID Price 
------------------------------------- 
1   2   1   900 
2   1   2   300 
3   1   1   900 

所需表

City  Total Sales 
---------------------- 
New York 1200 
Chicago 900 
Madison 0 

回答

2

試試這個,現在這個測試

var query = from consumer in Tb_Consumer.AsEnumerable() 
      select new 
      { 
       CityName = consumer.Field<string>("City"), 
       //Name of relationship i.e. relation1 is important here 
       Sales = consumer.GetChildRows("relation1").Sum(tx=> tx.Field<decimal>("Price")) 
      }; 

var datatable = new DataTable(); 
col = new DataColumn("City"); 
datatable.Columns.Add(col); 
col = new DataColumn("TotalSales"); 
datatable.Columns.Add(col); 

foreach (var item in query.ToList()) 
{ 
    var newrow = datatable.NewRow(); 
    newrow["City"] = item.CityName; 
    newrow["TotalSales"] = item.Sales; 
    datatable.Rows.Add(newrow); 
} 
+0

如何使用這把信息到另一個表? table.DataSource = query; ? – 2012-04-18 04:35:18

+0

你只需要把這個查詢放在你描述的代碼之後&這個查詢(我使用的變量)將返回一個CityName&Sales作爲屬性的類型列表。 – 2012-04-18 04:39:24

+0

有沒有簡單的方法將其設置爲表格的數據源? – 2012-04-18 04:42:32