2011-04-18 110 views
-1

您好我有以下情况:如何使用C#将多个DataTable对象与组合并在一起并合并重复的行?

我有一组查询将返回我的一组DataTable对象。该数据表将具有几行相同的列,以及每列独有的列。例如

表1:

Name | Jan Data | Feb Data 
A  |10   |20 
B  |12   |9 

表2:

Name | Mar Data | Apr Data | May Data 
A  |12   |21   |5 
C  |14   |90   |6 

现在我想合并这两个数据表对象。但在合并时,有两个表格共有的名称(如A),数据也不尽相同。所以我想要一个输出如:

Name | Jan Data | Feb Data | Mar Data | Apr Data | May Data 
A  |12   |21   |5   | 45  |52 
B  | 0   | 0   |   |62   |21 
C  |14   |90   |6   |63   |42 

结果表将具有按名称分组时每个行值的总和。 (我并没有在这里计算道歉的麻烦)

你能告诉我一个如何实现这个方法吗?

我使用C#2.0

+0

你可以请详细说明你出来把数据4月份的数据如何45以及5月份的数据如何到达 – gbbosmiya 2011-04-18 10:15:53

+0

-1因为不会'麻烦' – 2011-04-18 10:33:05

+0

@gbbosmiya:我没有正确总结。我已经提到了这个问题。 – Amit 2011-04-18 11:04:32

回答

1

我会写另一个查询,将两者合并,并返回正是我想要的。你所描述的是关系数据库和SQL所要做的。除非我绝对必须,否则我不会在代码中做到这一点。

+0

这是一个好主意...我不太熟悉sql ...任何指针你想分享如何可以在sql中实现? – Amit 2011-04-18 10:11:26

+0

是 - 熟练掌握SQL。我不能具体,因为我不知道你的模式。 – duffymo 2011-04-18 11:52:40

0

如果你可以在SQL视图中这样做,这可能是你最好的结果。

如果你这样做限制,我相信你会得到你想要出DataTable.Merge

的结果代码将看起来像:

private DataTable CombineTables(DataSet ds) 
{ 
return New DataTable = ds.Tables(0).Merge(ds.Tables(1),true,MissingSchemaAction.Add); 
}