c#.net 如何将两个datatable拼接成一个Datatable

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c#.net 如何将两个datatable拼接成一个Datatable相关的知识,希望对你有一定的参考价值。

有两个DataTable 希望竖着拼接成一个Datatable

参考技术A 调用datatable的Merge方法,Merge 是数据行的物理合并。
table1.Merge(table2);
这样实现的将table2中与table1中相同的字段合并到table1中,如果想要实现你所要的结果就是将table1与table2的字段相同,这样物理合并出的结果就是你想要的
参考技术B 连个datatable表名和对应的列名一样的话就用table1.Merge(table2),
不一样就循环加喽
参考技术C dataset 有个合并函数
using (SqlConnection connection =
new SqlConnection(connectionString))

SqlDataAdapter adapter =
new SqlDataAdapter(
"SELECT CustomerID, CompanyName FROM dbo.Customers",
connection);

connection.Open();

DataSet customers = new DataSet();
adapter.FillSchema(customers, SchemaType.Source, "Customers");
adapter.Fill(customers, "Customers");

DataSet orders = new DataSet();
orders.ReadXml("Orders.xml", XmlReadMode.ReadSchema);
orders.AcceptChanges();

customers.Merge(orders, true, MissingSchemaAction.AddWithKey);

或datatable也一样
table1.Merge(table2);本回答被提问者采纳

如何将三张表拼接成一张表?

【中文标题】如何将三张表拼接成一张表?【英文标题】:How to concatenate three tables into one table? 【发布时间】:2015-08-11 07:29:42 【问题描述】:

Table1 tblUserBadges

uid scenid  badgeid timestamp

u0    s1      b0       t1

u0    s1      b1       t2

u0    s2      b0       t3

u1    s1      b3       t4

u1    s1      b4       t5   

Table2 tblUserWarnings

uid scenid  warningid   timestamp

u0    s1      w0         t1

u0    s1      w1         t2

u0    s2      w2         t3

u1    s1      w3         t4

u1   s1       w4         t5

Table3 tblUserScenScores

uid scenid  score   attempts    timestamp


u0    s1     20       3            t1


u1    s1     22       7            t2

u0    s2     -5       1            t3

结果:Tabl4 viewUserScenarioStats

uid scenid  badges   warnings   score   attempts
u0   s1     b0, b1   w0, w1      20       3

u0   s2     b0       w2          -5       1

u1   s1     b3, b4   w3, w4      22       7

我尝试如下查询:

CREATE VIEW viewUserScenarioStats AS 
SELECT  uid.tblUserBadge, GROUP_CONCAT(scenid).tblUserWarnings, 
GROUP_CONCAT( badgeid).tblUserScrores, warningid.tblUserWarnings, score, attempts 

如何连接三个表。 但不工作......有什么帮助吗?

【问题讨论】:

【参考方案1】:

你可以这样做

select s.uid ,
s.scenid,
group_concat(distinct b.badgeid) badges,
group_concat(distinct w.warningid)  `warnings`,
s.score,
s.attempts
from tblUserScenScores s
join tblUserWarnings w on(s.uid = w.uid and s.scenid = w.scenid)
join tblUserBadges b  on(s.uid = b.uid and s.scenid = b.scenid)
group by s.uid ,s.scenid

DEMO

View Demo

【讨论】:

你能告诉我吗?你是怎么做到的?对我有什么建议吗?把你的秘钥给我…… @PrashantTapase 没什么特别的,我刚刚加入了您的表格,然后根据相同的 uid 对结果进行分组,场景中每个分数都有来自徽章和警告表的多行,因此使用 group_concat 我合并了徽章并警告每个分数作为逗号分隔的列表,但 w0、w1 出现的次数超过 1,因此在 group_concat 中添加了不同的选项,以便仅在我认为这对您有意义时才选择相关的警告和徽章

以上是关于c#.net 如何将两个datatable拼接成一个Datatable的主要内容,如果未能解决你的问题,请参考以下文章

vb.net 如何将两个datatable合并

怎样用sql语句实现将两个没有关系的表拼接成一张表???

ASP.NET把数据查询出来保存在了一个datatable里面了,之后我想把这个datatable的数据导入到access数据库

如何将三张表拼接成一张表?

mysql将多条结果拼接成一条结果

如何在 iOS Sprite Kit 中裁剪两张图像并拼接成一张?