【发布时间】:2012-05-01 20:41:55
【问题描述】:
假设这是我的确切代码:
DataTable table1 = new DataTable();
DataTable table2 = new DataTable();
DataTable joinedtable = new DataTable();
table1.Columns.Add("ID");
table1.Columns.Add("ColA");
table1.Rows.Add(1, "A");
table2.Columns.Add("ID");
table2.Columns.Add("ColB");
table2.Rows.Add(1, "B");
除了将 table1 和 table2 连接在一起并将其放入joinedTable 之外,我的查询(不管是否为 LINQ)会怎样? 当我尝试搜索示例时,我一直在寻找这样开头的示例:
var result = from x in table1
join y in table2 on x.ID equals y.ID
但是,我在 DataTable1 上收到一个错误,我发现建议改为执行“table1.AsEnumerable()”,但后来我没有 x.ID。 .ID 未定义。我只有普通 DataRow 拥有的 x 的东西。 我在这里做错了什么?我似乎无法弄清楚这一点。
感谢大家的帮助。
【问题讨论】:
-
@dash 我使用 System.Data;,它应该包括 .Data.DataSetExtensions,对吗?我假设是这样,但想确认一下。谢谢。
-
不——你需要 System.Data.DataSetExtensions——这是专门用于 Linqyfying 你的 DataTables 的。好吧,不是特别的,但它有帮助。请参阅msdn.microsoft.com/en-us/library/…(位于 DataSetExtensions 中并添加您所追求的功能)它们是否在您项目的参考中?如果是,请忽略我的评论。
-
@user1308743 - 任何理由两次发布相同的问题?您可以编辑原始问题以添加更多信息。
-
啊,我看到了你真正的问题。答案在另一个问题中 - 例如,您可以通过 DataRow 的索引器访问列 - x.Field 或 x["Id"]。这很好,构成您的加入条件。答案在您的另一篇文章中:-) @Joanna 也回答了您的问题。无需重复发布!
-
不 - 你很好,请忽略我的评论 - 有时 DataSetExtensions 不可用存在问题,但现在不是那个时候。你的问题已经在你的另一个帖子上得到了回答,所以我会去那里检查一下。祝你好运!