【发布时间】:2014-04-09 21:04:18
【问题描述】:
我有两个要加入并用于填充数据表的表,但我遇到了列名冲突问题:
----------- -----------
| Parent | | Child |
----------- -----------
| ParentID| | ChildID |
| Name | | ParentID|
| Value | | Name |
----------- | Value |
-----------
SQL 语句(MySQL 数据库,以防相关)
select p.*, c.* from parent p left join child c on c.ParentID = c.ChildID
我的适配器代码(C#):
var adapter = new MySqlDataAdapter(sql, DBConn);
adapter.Fill(table);
当我去阅读这些行时,我希望是这样的:
var parentName = row["p.Name"];
var childName = row["c.Name"];
相反,结果是这样的:
var parentName = row["Name"];
var childName = row["Name1"];
如何让列名使用别名?我觉得我遗漏了一些明显的东西,因为这似乎应该一直出现。
【问题讨论】:
-
Hey Norm,如果我们帮助了您,您应该选择一个答案! :) 如果您还没有投票,请点赞。
-
是的,Rafas 的答案解决了这个特定的情况,但是有一个一般用例没有。从下面开始:这不是我“拥有”别名的问题,而是从代码中删除特殊情况。我宁愿给所有东西起别名,而不仅仅是一些东西。如果我不能想出更好的东西,他的回答会问我问的问题,所以我会接受。
-
我认为对所有内容都使用别名是正确的方法。如果您正在生成 sql,则在每列中附加
"as " + tablename + "_" + columnname之类的内容可以解决您的所有问题,并且代码非常清晰。 -
另外,@Rafas 的答案是第一个,所以他没有理由不应该得到答案。这是一个伟大的,我赞成他。然而,表面上,我们说的是同一件事。
-
同意,我只希望有一个“选择 p.tablename_*”,所以我不必明确命名所有列。不过,我可以使用生成器来构建构建 sql 的东西,这意味着我不必手动将其全部写出来,至少
标签: c# mysql dataadapter