连接两个数据表

问题描述:

我有两个DataTable连接两个数据表

DataTable1:

id name 
-- ---- 
1 jhon 
2 peter 

DataTable2:

city  country 
---  ------- 
Sevilla Spain 
Granada Spain 

的ID对应。我需要连接这些数据表的列。

这是期望的结果:

id name city  country 
-- ---- ----  ------- 
1 Jhon Sevilla Spain 
2 Peter Granada Spain 

任何想法?

谢谢!

+0

[你尝试过什么?](http://whathaveyoutried.com) – ryadavilli 2013-02-15 11:43:05

+0

也许告诉我们您所使用的查询类型?实体框架还是纯sql?或其他什么? – Vogel612 2013-02-15 11:43:26

+3

两张桌子的记录应该如何组合?表1中的第1行到表2中的第1行,还是两个表共享的关键列? – 2013-02-15 11:43:36

我假设你的数据表名称是“DataTable1”和“DataTable2”,您可以通过使用下面的代码在DataTable1合并它们;

Datatable1.Columns.Add("city", typeof(string)); 
Datatable1.Columns.Add("country", typeof(string)); 

for (int i = 0; i < Datatable1.Rows.Count; i++) 
{ 
    Datatable1.Rows[i][2] = DataTable2.Rows[i][0].toString(); 
    Datatable1.Rows[i][3] = DataTable2.Rows[i][1].toString(); 
} 
+0

看起来不错,但是在数据库构建中会不会更容易? – Vogel612 2013-02-15 12:09:35

+0

我认为这是我的解决方案。我可以试试。为什么选择“ConvertSafe”?我有这个功能的错误。 – user2024475 2013-02-15 12:16:44

+0

@ user2024475对不起,这是我自己的课程,你可以使用.toString()也。我编辑了我的答案,现在你可以检查 – 2013-02-15 12:20:07

您需要添加主键表2,并添加两个表之间的关系。

+0

停止。没有必要,如果他只是在没有任何实体框架的情况下使用sql,也没有什么帮助(尽管你可能猜对了;)) – Vogel612 2013-02-15 11:44:38

+0

为什么?如何添加关系? – user2024475 2013-02-15 11:47:55

+0

@ user2024475 again:你正在使用哪种数据库,你的项目中是否有数据库模型,数据库存储在哪里? – Vogel612 2013-02-15 12:08:26

使用下面的代码。

SqlDataSource1.ConnectionString = "--YOUR CONNECTION STRING--"; 
SqlDataSource1.SelectCommand = "select DataTable1.id,DataTable1.name,DataTable2.city,DataTable2.country from DataTable1,DataTable2 
"; 
SqlDataSource1.DataBind(); 

祝你好运!

+0

错了,它不是sql - “我需要在c#中做,而不是在sql - user2024475” – 2013-02-15 11:58:26

+0

嘿伯克,我怎么知道的! 你应该在你的问题中提到这一点。 – 2013-02-15 12:10:00

+0

是的,我知道,这就是为什么我给你一个机会,你发展你的答案,而不是给你-1。 – 2013-02-15 12:11:57

你可以使用DataTable类

+0

错误,在两个数据表中没有共同的列 – 2013-02-15 11:59:01

的玛吉方法你可以把LINQ的benifit

  1. 投你的数据表中的IEnumerable
  2. 那么你可以申请LINQ过去。

    var results = from myRow in DataTable1.AsEnumerable() 
    var results2 = from myRow in DataTable2.AsEnumerable() 
    
    var result3= from row1 in results 
           join row2 in results2 
           select new 
           { 
            row1.id, 
            row1.name, 
            row2.city, 
            row2.country 
          }; 
    
+0

你真的没有那样做过吗?只需将linq添加到标签以便能够使用linq发布答案... – Vogel612 2013-02-15 12:26:17

+0

@ Vogel612是的,我做了,因为我认为它应该是。 – 2013-02-15 12:30:49

+1

抱歉告诉你,但你不应该让人们使用他们不明白的东西。你是否会看到你可能看到的问题,这个人不知道实体框架是什么。这是linq的基本借口。因此将linq添加到标签中是完全不合适的,不值得使用2k rep用户 – Vogel612 2013-02-15 12:34:44